2013-10-31 2 views
8

Ciao, anche se si potrebbe pensare che ci fosse una domanda simile, la mia è molto diversa da this.PyGame - Ottenere le dimensioni di un'immagine caricata

Sto tentando di caricare un'immagine da una directory e di impostare le dimensioni dello schermo (automaticamente) sulla dimensione dell'immagine caricata come "sfondo".

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

L'immagine che ho caricato con il mio "load()" classe è impostato sulla "bg" variabile e voglio utilizzare la dimensione di ciò che carico come "bg" per determinare la dimensione della finestra . Se si tenta di spostare

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

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

In cima a questo:

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

PyGame restituisce un errore, nel quale si afferma che il modo di visualizzazione non è impostata. Se lo faccio in questo modo:

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

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

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

naturalmente, questo non è vero, dal momento che le variabili "larghezza" e "altezza" non sono definiti per l'uso di "pygame.display.set_mode()".

Non riesco a capirlo, penso di risolvere attraverso un modo OO, ma non riesco a capirlo. Qualsiasi aiuto?

Grazie :)

risposta

7

Prima di poter utilizzare la funzione convert() su qualsiasi superficie, lo schermo deve essere stato inizializzato.

È possibile caricare le immagini prima di set_mode, ottenere la loro dimensione, e poi li convertdopo si è inizializzata il display, in questo modo:

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

si può tagliare un angolo qui utilizzando 'immagine. get_size() 'invece di' image.get_rect(). size', che rinuncia all'oggetto 'Rect' temporaneo. – Augusta

+0

@Augusta puoi ancora scrivere la tua risposta a questa domanda :) – furas

+0

Potrei, ma non sarebbe significativamente diverso da questo, tranne forse per la cosa 'get_size()' e un po 'di prosa. Sarebbe la stessa soluzione di base. ;) – Augusta