2013-10-31 24 views
8

Xin chào, mặc dù bạn có thể nghĩ rằng có một câu hỏi tương tự, tôi khá khác so với this.PyGame - Lấy kích thước của hình ảnh được tải

Tôi đang cố tải hình ảnh từ thư mục và đặt kích thước màn hình (tự động) thành kích thước của hình ảnh đang được tải dưới dạng "nền".

import pygame 
import sys 
from pygame.locals import * 

image_resources = "C:/Users/user/Desktop/Pygame App/image_resources/" 

class load: 
    def image(self, image): 
     self.image = image 
     return (image_resources + image) 
    def texture(self, texture): 
     self.texture = texture 
     return (image_resources + texture) 

bg = load().image("bg_solid_black.jpg") 

pygame.init() 

#screen = pygame.display.set_mode((width,height),0,32) 

#background = pygame.image.load(bg).convert() 

#width = background.get_width() 
#height = background.get_height() 

Những hình ảnh mà tôi nạp với tôi "load()" class được thiết lập để "bg" biến và tôi muốn sử dụng kích thước của bất cứ điều gì tôi tải như "bg" để xác định kích thước của cửa sổ . Nếu bạn cố gắng di chuyển

background = pygame.image.load(bg).convert() 

width = background.get_width() 
height = background.get_height() 

Ngày đầu này:

screen = pygame.display.set_mode((width,height),0,32) 

Pygame trả về một lỗi, trong đó khẳng định rằng chế độ hiển thị không được thiết lập. Nếu tôi làm điều đó như thế này:

screen = pygame.display.set_mode((width,height),0,32) 

background = pygame.image.load(bg).convert() 

width = background.get_width() 
height = background.get_height() 

tất nhiên, điều này là không đúng, vì biến "width" và "height" không được định nghĩa cho việc sử dụng "pygame.display.set_mode()".

Tôi không thể hình dung ra điều này, mặc dù tôi giải quyết thông qua một cách OO, nhưng tôi không thể hình dung ra được. Bất kỳ giúp đỡ?

Cảm ơn :)

Trả lời

7

Trước khi bạn có thể sử dụng chức năng convert() trên bề mặt bất kỳ, màn hình cần phải được khởi tạo.

Bạn có thể tải hình ảnh trước khi bạn set_mode, có được kích thước của chúng, và sau đó convert họ sau bạn đã khởi tạo màn hình, như vậy:

import pygame 

pygame.init() 

image = pygame.image.load("file_to_load.jph") 
print image.get_rect().size # you can get size 

screen = pygame.display.set_mode(image.get_rect().size,0,32) 

image = image.convert() # now you can convert 
+0

Bạn có thể cắt một góc ở đây bằng cách sử dụng 'hình ảnh. get_size() 'thay vì' image.get_rect(). size', gửi đối tượng 'Rect' tạm thời. – Augusta

+0

@Augusta bạn vẫn có thể viết câu trả lời của riêng bạn cho câu hỏi này :) – furas

+0

Tôi có thể, nhưng nó sẽ không có ý nghĩa khác nhau từ này tiết kiệm có thể cho 'get_size()' điều và một chút văn xuôi. Nó sẽ là cùng một giải pháp cơ bản. ;) – Augusta

Các vấn đề liên quan