Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 21, 2009 02:14:48

mistercx
От:
Зарегистрирован: 2009-09-21
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Капча: вывод в броузер

Народ! Засада!!!

Код

#!d:/usr/local/bin/python
import sys
import Image
size = (256, 256)

im = Image.open(“../img/big.jpg”)
im.thumbnail(size, Image.ANTIALIAS)
im.save(“../img/small50.jpg”, “JPEG”, quality=50)

отрабатывает нормально, а

print “Content-type: image/jpeg\n”
im.save(sys.stdout, “JPEG”)

выдает в броузер полную охинею вместо рисунка (вижу одни квадратики и горизонтальные разноцветные полоски вместо изображения)

Где копать?



Офлайн

#2 Сен. 21, 2009 12:32:20

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Капча: вывод в броузер

Можно поподробнее об использованной библиотеке
Это PIL, или PythonMagick - что это такое?



Офлайн

#3 Сен. 21, 2009 16:04:15

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

Капча: вывод в броузер

regall
Можно поподробнее об использованной библиотеке
Это PIL, или PythonMagick - что это такое?
Это PIL.
Хм… У меня этот пример нормально работает…
Включи вывод ошибок.
import cgitb
cgitb.enable()
upd: еще один перевод строки добавь, перед выводом изображения



Отредактировано (Сен. 21, 2009 16:06:19)

Офлайн

#4 Сен. 21, 2009 16:23:45

mistercx
От:
Зарегистрирован: 2009-09-21
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Капча: вывод в броузер

Хм… У меня этот пример нормально работает…
Это действительно PIL под Python 2.6 for Windows.
В том-то и дело, что ДОЛЖНО работать, а не работает. После сохранения этого импрессионизма из браузера Фотошоп говорит мол, повреждённый формат JPEG. А в файл всё сохраняется пречудесно… Может, Python c PIL переустановить? У меня на работе эта связка под фришный сервак стоит ещё там попробую.


Включи вывод ошибок.
import cgitb
cgitb.enable()
Да, вечером буду пробовать, спасибо!

upd: еще один перевод строки добавь, перед выводом изображения
Народ утверждает, что Python автоматически добавляет перевод строки при новой линии, поэтому достаточно одного. \n
Или народ не прав в корне? :)

Ещё будут соображения по сабжу?



Офлайн

#5 Сен. 21, 2009 19:28:03

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Капча: вывод в броузер

Вообще-то добавляет только для текстовых файлов, а для открытых в бинарном режиме - нет.
Ведь легко проверить, просто сравнив файл из первого варианта со вторым.



Офлайн

#6 Сен. 21, 2009 21:11:35

mistercx
От:
Зарегистрирован: 2009-09-21
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Капча: вывод в броузер

В общем ситуация такая: на серваке FreeBSD всё пашет пучком как оказалось… Соответственно, проблема в моей Винде на локалке….

Разбирусь в чем дело - напишу сюда и пожалуй, закрою тему. Спасибо всем, кто откликнулся!

Увы. Снос и установка питона с модулями проблему не решило.
Итак:

1. Windows XP SP3 rus
2. python-2.6.1
3. PIL-1.1.6.win32-py2.6

Код работает на фряхе но не работает в Винде:

#!d:/usr/local/bin/python

import sys
import Image

print """Content-Type: image/jpeg
"""

im=Image.open("../tmp/big.jpg")
size=(256,256)
im.thumbnail(size, Image.ANTIALIAS)
im.save(sys.stdout, "jpeg")
sys.exit()
Если кто юзал эту связку под винду и она работает - отзовитесь! Иначе, будем считать битым Виндозный дистрибутив PIL 1.1.6


Твою дивизию!!!!!
Нагуглил всё-таки решение!!! Идея: перевод sys.stdout в бинарный режим. Реализация:

#!d:/usr/local/bin/python -u
(используется ключ -u; юниксу пофиг, винде критично!)

Проблема решена. Движемся дальше. Всем ещё раз огромное мерси!!!



Отредактировано (Сен. 21, 2009 22:24:24)

Офлайн

#7 Сен. 22, 2009 10:53:53

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

Капча: вывод в броузер

mistercx
Код работает на фряхе но не работает в Винде:
Так бы стразу и сказал… :)
Винда бьет эти бинарные файлы, сталкивался тоже с этой проблемой…



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version