2013-10-31 13 views
8

Witaj, nawet jeśli możesz myśleć, że było podobne pytanie, moje jest całkiem inne niż this.PyGame - Pobieranie rozmiaru wczytanego obrazu

Próbuję załadować obraz z katalogu i ustawić rozmiar ekranu (automatycznie) na rozmiar obrazu ładowanego jako "tło".

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() 

Obraz że ładowane z moim „load()” klasa jest ustawiony w zmiennej „bg” i chcę użyć rozmiaru cokolwiek załadować jako „bg”, aby określić rozmiar okna . Jeśli chcesz przenieść

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

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

Oprócz tego:

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

Pygame zwraca błąd, w którym stwierdza się, że tryb wyświetlania nie jest ustawiony. Jeśli mogę to zrobić tak:

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

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

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

oczywiście, nie jest to prawdą, ponieważ zmienne „szerokość” i „wysokość” nie są zdefiniowane na użytek „pygame.display.set_mode()”.

Nie wydaje mi się, że to rozumiem, chociaż rozwiązałem go w sposób OO, ale po prostu nie mogę tego rozgryźć. Jakaś pomoc?

Dzięki :)

Odpowiedz

7

Zanim będzie można korzystać z funkcji convert() na każdej powierzchni, ekran musi być zainicjowany.

Można załadować obrazy przed wami set_mode, uzyskać ich rozmiar, a następnie convert im po już zainicjowany wyświetlacza, tak jak poniżej:

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

Można wyciąć narożnik tutaj za pomocą 'obraz. get_size() 'zamiast' image.get_rect(). size', rezygnując z tymczasowego obiektu 'Rect'. – Augusta

+0

@Augusta wciąż możesz napisać własną odpowiedź na to pytanie :) – furas

+0

Mogłem, ale nie byłoby to istotnie różne od tego, z wyjątkiem może dla 'get_size()' i trochę prozy. Byłoby to samo podstawowe rozwiązanie. ;) – Augusta

Powiązane problemy