如何使用Linux显示animationgif?

我想从Linux中的python控制台打开一个GIF图像。 通常当打开.png.jpg ,我会执行以下操作:

 >>> from PIL import Image >>> img = Image.open('test.png') >>> img.show() 

但是,如果我这样做:

 >>> from PIL import Image >>> img = Image.open('animation.gif') >>> img.show() 

Imagemagick将打开,但只显示GIF的第一帧,而不是animation。

有没有办法在Linux中的查看器中显示GIF的animation?

    Image.show将图像转储到临时文件,然后尝试显示该文件。 它调用ImageShow.Viewer.show_image (请参阅/usr/lib/python2.7/dist-packages/PIL/ImageShow.py ):

     class Viewer: def save_image(self, image): # save to temporary file, and return filename return image._dump(format=self.get_format(image)) def show_image(self, image, **options): # display given image return self.show_file(self.save_image(image), **options) def show_file(self, file, **options): # display given file os.system(self.get_command(file, **options)) return 1 

    AFAIK,标准的PIL 不能保存动画GIFS 1

    image._dump中的image._dump调用仅保存第一帧。 所以,不管后来被称为什么观众,你只能看到一个静态图像。

    如果你有Imagemagick的display程序,那么你也应该有它的animate程序。 所以,如果你已经有了GIF文件,那么你可以使用

     animate /path/to/animated.gif 

    要在Python中这样做,可以使用子img.show模块(而不是img.show ):

     import subprocess proc = subprocess.Popen(['animate', '/path/to/animated.gif']) proc.communicate() 

    1 根据kostmo ,有一个脚本来保存与PIL动画GIFS。


    要显示动画而不阻塞主进程,请使用单独的线程来生成animate命令:

     import subprocess import threading def worker(): proc = subprocess.Popen(['animate', '/path/to/animated.gif']) proc.communicate() t = threading.Thread(target = worker) t.daemon = True t.start() # do other stuff in main process t.join() 

    linux打开一个gif

    我在Fedora 17中做了这个:

     el@defiant ~ $ sudo yum install gifview ---> Package gifview.x86_64 0:1.67-1.fc17 will be installed curl http://img.zgserver.com/python/4rBHtSm.gif > mycat.gif gifview mycat.gif 

    一个窗口出现,你可以通过GIF的帧。