Я хочу использовать string
для хранения данных изображения.
Фон: в некоторых других частях кода я загружаю изображения, которые были загружены из Интернета и сохранены как string
с помощью
imgstr = urllib2.urlopen(imgurl).read()
PIL.Image.open(StringIO.StringIO(imstr))
Теперь я делаю некоторые манипуляции с изображением с объектом PIL.Image. Я также хочу преобразовать эти объекты в тот же string
-формат, чтобы их можно было использовать в исходном коде.
Это то, что я пробовал.
>>> import PIL
>>> import StringIO
>>> im = PIL.Image.new("RGB", (512, 512), "white")
>>> imstr=im.tostring()
>>> newim=PIL.Image.open(StringIO.StringIO(imstr))
Traceback (innermost last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\PIL\Image.py", line 2006, in open
raise IOError("cannot identify image file")
IOError: cannot identify image file
Я нашел подсказки в Интернете, что это может произойти. например Python PIL: как записать изображение PNG в строку Однако я не смог извлечь правильное решение для своего примера кода.
Следующая попытка была:
>>> imstr1 = StringIO.StringIO()
>>> im.save(imstr1,format='PNG')
>>> newim=PIL.Image.open(StringIO.StringIO(imstr1))
Traceback (innermost last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\PIL\Image.py", line 2006, in open
raise IOError("cannot identify image file")
IOError: cannot identify image file
tostring()
не создает формат файла изображения; он создает необработанные данные изображения. Вы можете загрузить это снова только с помощью `. Какую цель вы преследовали, сохранить изображение в определенном формате в файловый объект в памяти? - person Martijn Pieters   schedule 27.03.2015