Я пытаюсь сохранить 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, но в моем случае это не так.
Есть ли в потоке HTTP-заголовок, или это действительно JPEG? У него есть строка «JFIF» в первых десяти байтах? – johntellsall
Это префикс 'string_io': 'RIFF \ xa2_ \ x00 \ x00WEBPVP8', что имеет смысл, потому что я получаю изображение из« image/webp », и« В 2010 году Google представил формат изображения WebP, который использует RIFF в качестве контейнера ". Это конкретная строка javascript, которая создает изображение: 'var dataURL = canvas.toDataURL ('image/webp');' –
Я не думаю, что 'WebP' существовал даже при обновлении PIL. –