2016-02-11 2 views
1

Я пытаюсь прочитать изображение в формате jpg, используя pyplot matplotlib.Python mac matplotlib imread error

Это ошибка я получаю при использовании imread команды:

Traceback (most recent call last): 
File "/Users/rugheid/Dropbox/Documents/Rugen Dropbox/School/Universiteit/3e jaar/P&O/Git Repository/backend/image_processing/image_processor.py", line 27, in <module> 
img = pyplot.imread(io.BytesIO(jpg_bytes), format='jpg') 
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/pyplot.py", line 2177, in imread 
return _imread(*args, **kwargs) 
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/image.py", line 1242, in imread 
im = pilread(fname) 
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/image.py", line 1226, in pilread 
return pil_to_array(image) 
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/image.py", line 1328, in pil_to_array 
x = toarray(im) 
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/image.py", line 1313, in toarray 
x_str = im.tostring('raw', im.mode) 
File "/Library/Python/2.7/site-packages/PIL/Image.py", line 695, in tostring 
"Please call tobytes() instead.") 
Exception: tostring() has been removed. Please call tobytes() instead. 

Кажется, он звонит что-то из PIL, который был удален ... Могу ли я изменить Matplotlib использовать подушку вместо PIL? Или я могу сделать что-то еще? У меня установлена ​​самая последняя версия matplotlib.

Заранее благодарен!

ответ

0

Вы, вероятно, должны использовать только pillow, так как matplotlib просто возвращается к PIL в любом случае для чего угодно, кроме файлов PNG. От the documentation:

Matplotlib могут читать только PNGs изначально, но если установлен PIL, он будет использовать его для загрузки изображения и возвращает массив (если это возможно)

Чтобы загрузить JPG с pillow :

from PIL import Image 
im = Image.open('myimage.jpg') 

Таким образом вы вырезаете среднего человека и напрямую контролируете загрузку изображения.