Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 12, 2009 16:48:16

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

PIL объединение картинок.

Имеется два изображения, необходимо чтобы получилось одно в ввиде склееных двух. Изображения получаю в виде строки по http:
img1 = response1.read()
img2 = response2.read()

Пробовал использовать метод fromstring, но он выдает ошибку:
size = 75,51
im1 = Image.fromstring(“RGBA”,size,img1)
im2 = Image.fromstring(“RGBA”,size,img2)
И как их “склеить” я тоже не знаю. Хотел попробовать вот так:
outfile = Image.merge(“RGB”, (im1, img, im3))
Но думаю, что наверняка неправильно, да и не дошел я до этого шага, т.к не получился у меня метод fromstring.



Офлайн

#2 Июнь 14, 2009 10:41:19

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

PIL объединение картинок.

Сервер твой?! Отдает изображение в каком формате?!
Если на сервере PIL отдает через tostring, только в этом случае можно использовать fromstring
Иначе, открывай как файл, при помощи модуля StringIO например.



Офлайн

#3 Июнь 14, 2009 16:08:50

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

PIL объединение картинок.

Вот для примера, пусть изображение имеет урл http://www.codeproject.com/SiteRes/CP/Img/Std/logo225x90.gif ( Правда в моем случае jpeg).
opener = build_opener() # думаю не столь важно, что тут
url = "http://www.codeproject.com/SiteRes/CP/Img/Std/logo225x90.gif
req = urllib2.Request(url, None, headers)
response = opener.open(req)
img1 = response.read() # вот в таком виде изображение
# Ну а дальше…
size = 75,51
im1 = Image.fromstring(”RGBA",size,img1)
И через StringIO пробовал, все равно ошибку получал, сейчас не могу к сожалению текст ошибки привести, что-то там про decoder было. Все вышеперечисленное правильно? Если да - буду искать косяк, плюс хотелось бы узнать как их склеить.



Офлайн

#4 Июнь 14, 2009 21:56:13

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

PIL объединение картинок.

Попробуй так:

img1 = Image.open(response)
Здесь response воспринимается как файловый объект, это значит, что он должен иметь методы read, seek и tell.

Ну, если это не так, то:
img1 = Image.open(StringIO(response.read()))
Ты же не raw по сети получаешь, так о каком Image.fromstring может идти речь?

..bw



Отредактировано (Июнь 15, 2009 21:28:26)

Офлайн

#5 Июнь 15, 2009 14:11:53

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

PIL объединение картинок.

Спасибо, со StringIO все получилось.



Отредактировано (Июнь 15, 2009 15:49:26)

Офлайн

#6 Июнь 15, 2009 21:33:48

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

PIL объединение картинок.

Забыл сказать.
Смени название темы. Обсуждаемый здесь вопрос не касается объединения.
Например так: “Открытие изображения PIL по его URL”

..bw



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version