2017-08-08 1 views
0

Comment convertir une image en une autre image dans pygame sans utiliser de classe d'image-objet? Comment puis-je supprimer l'image précédente après l'avoir convertie en une autre?Comment convertir une surface (image) en une autre surface dans pygame?

+0

Qu'essayez-vous exactement de faire? – skrx

+0

Que voulez-vous dire en convertissant une surface en une autre surface? Changer pour un nouveau format? Pouvez-vous nous montrer un exemple dans le code de ce que vous avez essayé et cela pourrait être plus clair. –

Répondre

0

J'ai écrit un petit programme aujourd'hui qui montre comment je change une image d'objets (cela peut aider/répondre à votre question). Il contient des notes pour l'essentiel de l'utilisation du code, il est donc plus facile de comprendre comment et pourquoi cela fonctionne (pour autant que je sache, n'importe qui aurait pu commencer à programmer hier).

Quoi qu'il en soit, voici le code:

import pygame, sys 

#initializes pygame 
pygame.init() 

#sets pygame display width and height 
screen = pygame.display.set_mode((600, 600)) 

#loads images 
background = pygame.image.load("background.png").convert_alpha() 

firstImage = pygame.image.load("firstImage.png").convert_alpha() 

secondImage = pygame.image.load("secondImage.png").convert_alpha() 

#object 
class Player: 
    def __init__(self): 

     #add images to the object 
     self.image1 = firstImage 
     self.image2 = secondImage 

#instance of Player 
p = Player() 

#variable for the image switch 
image = 1 

#x and y coords for the images 
x = 150 
y = 150 

#main program loop 
while True: 

    #places background 
    screen.blit(background, (0, 0)) 

    #places the image selected 
    if image == 1: 
     screen.blit(p.image1, (x, y)) 
    elif image == 2: 
     screen.blit(p.image2, (x, y)) 

    #checks if you do something 
    for event in pygame.event.get(): 

     #checks if that something you do is press a button 
     if event.type == pygame.KEYDOWN: 

      #quits program when escape key pressed 
      if event.key == pygame.K_ESCAPE: 
       sys.exit() 

      #checks if down arrow pressed 
      if event.key == pygame.K_DOWN: 

       #checks which image is active 
       if image == 1: 

        #switches to image not active 
        image = 2 

       elif image == 2: 

        image = 1 

    #updates the screen 
    pygame.display.update() 

Je ne sais pas comment votre code est mis en place ou si c'est ce dont vous avez besoin (je ne comprends pas tout à fait des classes soit il peut donc être un sprite classe), mais j'espère que cela aide!

0

Conversion d'une image à l'autre est aussi simple que réaffectant la variable

firstImage = pygame.image.load("firstImage.png") 
secondImage = pygame.image.load("secondImage.png") 

firstImage = secondImage 

del secondImage 

Je ne sais pas exactement ce que vous voulez dire en supprimant l'image. Vous pouvez utiliser "del secondImage" pour supprimer la référence dans votre code et l'envoyer au garbage collection. Une fois que vous avez effacé l'écran et que vous avez masqué l'image mise à jour, il ne devrait plus y avoir de signe d'image obsolète.