将pythonmagick Image转换为tkinter Image

时间:2015-03-19 00:29:06

标签: python python-3.x tkinter pillow pythonmagick

简单地说,我想在Image申请中使用由pythonmagick创建的tkinter

简而言之,我的目标是在tkinter中显示动画GIF。最不方便用户的方法是让最终用户从他们的GIF / AVI /等生成一系列图像。以他们喜欢的任何方式,然后告诉应用程序图像在哪里,以便它可以使用after循环它们。

为了增加一些便利性,带有convert的命令行ImageMagick可执行文件可以包含在应用程序中,并在用户选择GIF时自动调用。然而,这仍然会在用户的硬盘驱动器周围留下一堆图像文件,并且应用程序必须与每个操作系统的ImageMagick可执行文件捆绑在一起,这可能会导致兼容性问题。

理想情况下,用户的GIF将完全转换为内存中的一系列图像,然后变为Imagetkinterpillow兼容(我的应用程序使用) pillow接受各种格式而不仅仅是GIF和PGM / PPM),然后动画。

我认为这是pythonmagick可以起作用的地方。

学习pythonmagick的基本用法是一回事,但我不知道在哪里可以了解如何将pythonmagick Image转换为tkinter一个。

pythonmagick的完整文档似乎是this text file。它确实包含将pythonmagick Image转换为PIL Image的示例,但它不起作用:

img = PythonMagick.Image(magickimage)  # make copy
img.depth = 8        #  this takes 0.04 sec. for 640x480 image
img.magick = "RGB"
data = img.data
w, h = img.columns(), img.rows()
# convert string array to an RGB Pil image
pilimage = Image.fromstring('RGB', (w, h), data)

pythonmagick Image s不包含data属性。我尝试了pythonmagick Blob一点点,但我不知道它在做什么或它是如何工作的。我尝试运行上面的代码,将img.data替换为我之前保存的blob.data(通过this SO question),但它给了我以下内容:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte

我还尝试使用im = Image.frombytes('I', (400, 145), blob.data)从字节而不是字符串(通过this SO question)创建图像,但这也不起作用。

也许它很简单,但我有一种感觉我离开了。清理完毕后,我会考虑使用pythonmagick分割GIF。

0 个答案:

没有答案