Найти - Пользователи
Полная версия: Капча: вывод в броузер
Начало » Python для экспертов » Капча: вывод в броузер
1
mistercx
Народ! Засада!!!

Код

#!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”)

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

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


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

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

Ещё будут соображения по сабжу?
Андрей Светлов
Вообще-то добавляет только для текстовых файлов, а для открытых в бинарном режиме - нет.
Ведь легко проверить, просто сравнив файл из первого варианта со вторым.
mistercx
В общем ситуация такая: на серваке 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; юниксу пофиг, винде критично!)

Проблема решена. Движемся дальше. Всем ещё раз огромное мерси!!!
igor.kaist
mistercx
Код работает на фряхе но не работает в Винде:
Так бы стразу и сказал… :)
Винда бьет эти бинарные файлы, сталкивался тоже с этой проблемой…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB