2013-11-18 3 views
0

Мне нужно указать фон на график matplotlib, используя ax.imshow(). Фоновыми изображениями, которые я буду использовать, являются GIF-изображения. Несмотря на установленный PIL, следующий код приводит к ошибке, жалующиеся, что Python Image Library (PIL) не установлен (что это):Использование Matplotlib imshow для отображения изображения GIF

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

Чтение изображения с помощью 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 

причина заключается в том, что текущая информации о цвете содержится в таблицах цветов доступа sed через img.getcolors() или img.getpalette().

Преобразование всех изображений в PNG или другой подходящий формат, который приводит к образам RGB при их открытии с imread() или Image.open(), не является вариантом. Я мог бы конвертировать изображения при необходимости с помощью PIL, но считаю это решение уродливым. Итак, вопрос заключается в следующем: есть ли простой и быстрый способ (изображения размером 5000 х 5000 пикселей) преобразовать изображения GIF в RGB (в ОЗУ), чтобы я мог их отображать с помощью imshow()?

ответ