2016-07-23 140 views
0

我有6張照片,我想從他們製作GIF並在Pygame上展示它。 我知道,我無法簡單地預覽它,所以我可以做什麼來顯示動畫像gif?如何在pygame中製作gif?

的Python 2.7

回答

1

您可以創建基於時間間隔的圖像之間進行切換的一類。

class Animation(pygame.sprite.Sprite): 

    def __init__(self, images, time_interval): 
     super(Animation, self).__init__() 
     self.images = images 
     self.image = self.images[0] 
     self.time_interval = time_interval 
     self.index = 0 
     self.timer = 0 

    def update(self, seconds): 
     self.timer += seconds 
     if self.timer >= self.time_interval: 
      self.image = self.images[self.index] 
      self.index = (self.index + 1) % len(self.images) 
      self.timer = 0 

我創建了一個小樣本程序來試用它。

import pygame 
import sys 

pygame.init() 


class Animation(pygame.sprite.Sprite): 

    def __init__(self, images, time_interval): 
     super(Animation, self).__init__() 
     self.images = images 
     self.image = self.images[0] 
     self.time_interval = time_interval 
     self.index = 0 
     self.timer = 0 

    def update(self, seconds): 
     self.timer += seconds 
     if self.timer >= self.time_interval: 
      self.image = self.images[self.index] 
      self.index = (self.index + 1) % len(self.images) 
      self.timer = 0 


def create_images(): 
    images = [] 
    for i in xrange(6): 
     image = pygame.Surface((256, 256)) 
     image.fill((255 - i * 50, 255, i * 50)) 
     images.append(image) 
    return images 


def main(): 
    images = create_images() # Or use a list of your own images. 
    a = Animation(images, 0.25) 

    # Main loop. 
    while True: 
     seconds = clock.tick(FPS)/1000.0 # 'seconds' is the amount of seconds each loop takes. 

     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       sys.exit() 

     a.update(seconds) 
     screen.fill((0, 0, 0)) 
     screen.blit(a.image, (250, 100)) 
     pygame.display.update() 


if __name__ == '__main__': 
    screen = pygame.display.set_mode((720, 480)) 
    clock = pygame.time.Clock() 
    FPS = 60 
    main()