使用Matplotlib imshow显示GIF图像

时间:2013-11-18 21:21:51

标签: python numpy matplotlib python-imaging-library

我需要使用ax.imshow()显示matplotlib图的背景。我将使用的背景图像是GIF图像。尽管安装了PIL,但以下代码导致错误,抱怨未安装Python映像库(PIL)(它是):

from pylab import imread
im_file = open("test.gif")
im_obj = imread(im_file)

使用PIL直接读取图像效果更好:

from PIL import Image
import numpy
img = Image.open("test.gif")
img_arr = asarray(img.getdata(), dtype=numpy.uint8)

但是,在重新整形数组时,以下代码不起作用:

img_arr = img_arr.reshape(img.size[0], img.size[1], 3) #Note the number 3

原因是实际的颜色信息包含在通过img.getcolors()img.getpalette()访问的颜色表中。

将所有图像转换为PNG或使用imread()Image.open()打开RGB图像时产生RGB图像的其他合适格式不是一种选择。我可以在需要时使用PIL转换图像,但我认为这个解决方案很难看。所以问题如下:是否有简单快速(图像为5000 x 5000像素)的方式将GIF图像转换为RGB(在RAM中),以便我可以使用imshow()显示它们?

1 个答案:

答案 0 :(得分:0)

您需要先将GIF转换为RGB:

img = Image.open("test.gif").convert('RGB')

请参阅此问题:Get pixel's RGB using PIL