我正在尝试使用pygame.image.save
保存的pygame框架创建一个gif,假设框架已经保存在运行时目录中,然后我使用这段代码:
file_names = sorted((fn for fn in os.listdir('.') if fn.endswith('.png')))
images = [Image.open(fn) for fn in file_names]
filename = "my_gif.GIF"
writeGif(filename, images, duration=1.0, dither=0)
运行该文件后没有错误.gif文件权重为21 KB,但我能看到的所有内容都是黑屏(即使.png文件没有黑色的任何内容)。
但之前在images2gif.py中存在错误:
fp.write(globalPalette)
TypeError: must be string or buffer, not None
我在这个问题的最佳答案中使用了方法:Error in images2gif.py with GlobalPalette
现在它不会引发任何错误,但.gif文件完全是黑色。
我使用Python 2.7.6
这是生成.png然后生成.gif:
的完整代码import pygame, sys, os
from images2gif import writeGif as writeGif
from PIL import Image
from pygame.locals import *
def main():
pygame.init()
surface = pygame.display.set_mode((800, 600), 0, 32)
surface.fill((255,0,0))
center = (800 // 2, 600 // 2)
count = 1
while (count < 26):
for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
sys.exit()
pygame.draw.rect(surface, (0, 255, 255), (center[0], center[1] + (count * 5), 5, 5))
filename = 'frame-%03d.png' % (count)
count = count + 1
pygame.image.save(surface, filename)
pygame.quit()
file_names = sorted((fn for fn in os.listdir('.') if fn.endswith('.png')))
images = [Image.open(fn) for fn in file_names]
filename = "my_gif.GIF"
writeGif(filename, images, duration=1.0, dither=0)
sys.exit()
main()
也许有更好的方法从这些.png文件创建gif或电影?我不必使用images2gif.py