<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Генерация captcha средствами PIL</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/6437.html</link>
    <description>Ни где не смог найти работающий пример, как вывести произвольное&lt;br&gt;изображение сгенерированное python-скриптом в тег &amp;lt;img src=&quot;&quot; /&amp;gt;.&lt;br&gt;&lt;br&gt;Задача собственно такова:&lt;br&gt;&lt;br&gt;Имеется некая html-страница содержащая строку:&lt;br&gt;&lt;br&gt;&amp;lt;img src=&quot;/cgi-bin/captcha.py&quot; /&amp;gt;&lt;br&gt;&lt;br&gt;Соответственно имеется скрипт /cgi-bin/captcha.py который&lt;br&gt;создает при помощи библиотеки PIL произвольную картинку&lt;br&gt;(либо загружает ее из файла - не важно).&lt;br&gt;&lt;br&gt;import Image&lt;br&gt;im = Image.open(&quot;image.jpg&quot;)&lt;br&gt;print &apos;Content-Type: image/jpeg &#092;n&#092;n&apos;&lt;br&gt;print im&lt;br&gt;&lt;br&gt;Данный скрипт неправильный (неработает) - я просто привел его&lt;br&gt;в качестве примера чтобы показать, что я хочу получить.&lt;br&gt;&lt;br&gt;Как правильно вывести картинку содержащуюся в переменной &quot;im&quot; в&lt;br&gt;тег &amp;lt;img src=&quot;&quot; /&amp;gt;  ?&lt;br&gt;</description>

<item>
    <title>Генерация captcha средствами PIL (mistercx)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/6437.html#6</link>
    <pubDate>Sun, 20 Sep 2009 23:05:35 GMT</pubDate>
    <description>&amp;gt;import sys&lt;br&gt;&amp;gt;import Image&lt;br&gt;&amp;gt;im = Image.open(&quot;../img/big.jpg&quot;)&lt;br&gt;&amp;gt;print &quot;Content-type: image/jpeg&#092;n&quot;&lt;br&gt;&amp;gt;im.save(sys.stdout, &quot;JPEG&quot;)&lt;br&gt;&lt;br&gt;У меня этот код выводит в броузер вместо картинки какую-то охинею (всё в больших разноцветных квадратиках).&lt;br&gt;&lt;br&gt;При этом:&lt;br&gt;&lt;br&gt;&amp;gt;im.save(&quot;../img/small50.jpg&quot;, &quot;JPEG&quot;, quality=50)&lt;br&gt;&lt;br&gt;создает на диске абсолютно нормальный файл....&lt;br&gt;&lt;br&gt;Интересно, где собака зарыта...&lt;br&gt;</description>
</item>

<item>
    <title>Генерация captcha средствами PIL (alexander0203)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/6437.html#5</link>
    <pubDate>Sun, 12 Jul 2009 20:48:39 GMT</pubDate>
    <description>Проверил ваш вариант - работает нормально. Что касается&lt;br&gt;&quot;ненужного преобразование в png&quot; - делать его придется&lt;br&gt;по любому. Дело в том что пример с загрузкой готового&lt;br&gt;изображения я привел для простоты. На самом деле каптча&lt;br&gt;генерируется на лету и уже потом на выходе преобразуется&lt;br&gt;в какой-нибудь конкретный формат (jpg/png - не важно).&lt;br&gt;</description>
</item>

<item>
    <title>Генерация captcha средствами PIL (alexander0203)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/6437.html#4</link>
    <pubDate>Sun, 12 Jul 2009 20:34:13 GMT</pubDate>
    <description>Скрипт написал на основе идей кода отсюда:&lt;br&gt;&lt;br&gt;http://lost-theory.org/python/dynamicimg.html&lt;br&gt;&lt;br&gt;Не знаю, как на счет лишнего расхода памяти - просто каптча&lt;br&gt;как правило мааааленькая картинка так что думаю что в&lt;br&gt;данном случае это не критично.&lt;br&gt;</description>
</item>

<item>
    <title>Генерация captcha средствами PIL (angra)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/6437.html#3</link>
    <pubDate>Sun, 12 Jul 2009 20:18:56 GMT</pubDate>
    <description>По сравнению с прямым выводом в stdout лишнее пожирание памяти на хранение копии картинки и ненужное преобразование в png, но говорят питонщиков подобные мелочи не интересуют ;)&lt;br&gt;</description>
</item>

<item>
    <title>Генерация captcha средствами PIL (alexander0203)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/6437.html#2</link>
    <pubDate>Sun, 12 Jul 2009 20:14:17 GMT</pubDate>
    <description>Мне уже удалось найти работающий пример но он выглядит немного &lt;br&gt;по другому:&lt;br&gt;&lt;br&gt;#------- captcha.py -----------&lt;br&gt;#!/usr/local/bin/python&lt;br&gt;&lt;br&gt;import Image&lt;br&gt;import cStringIO&lt;br&gt;&lt;br&gt;im = Image.open(&quot;image.jpg&quot;)&lt;br&gt;&lt;br&gt;f = cStringIO.StringIO()&lt;br&gt;im.save(f, &quot;PNG&quot;)&lt;br&gt;f.seek(0)&lt;br&gt;print &apos;Content-Type: image/png&#092;n&apos;&lt;br&gt;print f.read()&lt;br&gt;&lt;br&gt;#------- end file -------------&lt;br&gt;</description>
</item>

<item>
    <title>Генерация captcha средствами PIL (angra)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/6437.html#1</link>
    <pubDate>Sun, 12 Jul 2009 20:03:10 GMT</pubDate>
    <description>В скрипте две ошибки, не считая возможного отсутствия shebang и x бита на файле.&lt;br&gt;1. python в отличии от perl всегда делает перевод строки при print, так что один &#092;n лишний&lt;br&gt;2. print im выведет текст вроде &amp;lt;JpegImagePlugin.JpegImageFile instance at 0xb7b55f2c&amp;gt;. Для вывода содержимого объекта нужно использовать метод save и sys.stdout&lt;br&gt;Итого правильным вариантом будет &lt;br&gt;#!/usr/bin/python&lt;br&gt;import Image&lt;br&gt;import sys&lt;br&gt;im = Image.open(&quot;image.jpg&quot;)&lt;br&gt;print &apos;Content-Type: image/jpeg&#092;n&apos;&lt;br&gt;im.save(sys.stdout, &quot;JPEG&quot;)&lt;br&gt;</description>
</item>

</channel>
</rss>
