Как создать изображение из строки в Python

Вопрос также возникает, как получить данные в BLOB. Можно поместить данные в оператор INSERT, поскольку пример PHP показывает (хотя необходимо использовать mysql_real_escape_string вместо addslashes). Если файл существует на сервере базы данных, можно также использовать MySQL LOAD_FILE

17
задан Makoto 11 August 2013 в 18:52
поделиться

2 ответа

Я подозреваю, что вы не seek -скачиваете обратно в начало буфера перед тем, как передать объект StringIO в PIL. Вот код, демонстрирующий проблему и решение:

>>> buff = StringIO.StringIO()
>>> buff.write(open('map.png', 'rb').read())
>>> 
>>> #seek back to the beginning so the whole thing will be read by PIL
>>> buff.seek(0)
>>>
>>> Image.open(buff)
<PngImagePlugin.PngImageFile instance at 0x00BD7DC8>
>>> 
>>> #that worked.. but if we try again:
>>> Image.open(buff)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\python25\lib\site-packages\pil-1.1.6-py2.5-win32.egg\Image.py", line 1916, in open
    raise IOError("cannot identify image file")
IOError: cannot identify image file

Убедитесь, что вы вызываете buff.seek (0) перед чтением любых объектов StringIO. В противном случае вы будете читать с конца буфера, который будет выглядеть как пустой файл и, вероятно, вызовет ошибку, которую вы видите.

29
ответ дан 30 November 2019 в 11:52
поделиться

Вы должны либо вызвать buff.seek (0) , либо, что лучше, инициализировать буфер памяти данными StringIO .StringIO (данные) .

7
ответ дан 30 November 2019 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: