2014-06-03 3 views
1

Я пытаюсь сохранить jpg-изображение из формы приложения Flask. Следующий код работает отлично:PIL.Image.open() дает IOError: невозможно определить файл изображения

blob = request.files[canvas_key] 
blob.stream.seek(0) 
data = blob.stream.read() 
string_io = cStringIO.StringIO(data) 

string_io имеет тип <cStringIO.StringI object at 0x10bf2bf10>.

И все же, когда я пытаюсь: Image.open(string_io), я получаю эту ошибку: IOError: cannot identify image file.

Использование stream.seek(0), похоже, решает эту проблему для other people, но в моем случае это не так.

+0

Есть ли в потоке HTTP-заголовок, или это действительно JPEG? У него есть строка «JFIF» в первых десяти байтах? – johntellsall

+0

Это префикс 'string_io': 'RIFF \ xa2_ \ x00 \ x00WEBPVP8', что имеет смысл, потому что я получаю изображение из« image/webp », и« В 2010 году Google представил формат изображения WebP, который использует RIFF в качестве контейнера ". Это конкретная строка javascript, которая создает изображение: 'var dataURL = canvas.toDataURL ('image/webp');' –

+3

Я не думаю, что 'WebP' существовал даже при обновлении PIL. –

ответ

1

Благодаря @Mark, я изменил тип изображения, который я захватил из WebP в PNG.

Смежные вопросы