2015-08-07 3 views
2

Мне передан список файлов из бэкэнд приложения, которые должны быть jpeg-файлами. Однако для моей жизни я не смог преобразовать их в объекты изображения PIL. Когда я называюПреобразование строки jpeg в объект изображения PIL

str(curimg) 

я вернусь:

<type 'str'> 

. Я попытался использовать open(), .read, io.BytesIO (img.read(), а также ничего не делать с ним, но он продолжает видеть его как строку. Когда я печатаю строку, я получаю неузнаваемые символы. как сказать python, как intepret эту строку как jpeg и преобразовать ее в пилюли, где я могу позвонить .size и np.array?

+1

ли [этот вопрос] (http://stackoverflow.com/questions/1664861/how-to-create-an-image-from-a-string-in-python) есть ответ, который вы ищете? – Octopus

+0

Вы пытались ['Image.fromstring()'] (http://effbot.org/zone/pythondoc-compact.htm#Image.fromstring-function)? –

+0

^^ Единственное, что я не знаю, как получить размер, который требуется fromstring()? Все, что мне дано, это строка. – mt88

ответ

7

Вы должны иметь возможность передать объект StringIO в PIL и открыть его, чтобы . способ

т.е.

from PIL import Image 
import StringIO 
tempBuff = StringIO.StringIO() 
tempBuff.write(curimg) 
tempBuff.seek(0) #need to jump back to the beginning before handing it off to PIL 
Image.open(tempBuff) 
+0

спасибо. Наверное, мне нужно было использовать бафф – mt88

0

то же самое, но немного проще

from PIL import Image 
import io 
Image.open(io.BytesIO(image)) 

Примечание:

Если изображение находится в Интернете; вам нужно сначала загрузить его.

import requests 
image = requests.get(image_url).content #download image from web 

И затем передать его в модуль io.

io.BytesIO(image) 

Если изображение находится на вашем hd; вы можете напрямую открыть PIL.

Image.open('image_file.jpg') #image in your HD