Открыть изображение PIL из байтового файла
У меня есть это изображение размером 128 x 128 пикселей и RGBA, хранящееся в моей памяти в виде байтовых значений. Но
from PIL import Image
image_data = ... # byte values of the image
image = Image.frombytes('RGBA', (128,128), image_data)
image.show()
Вызывает исключение
ValueError: недостаточно данных изображения
Почему? Что я делаю не так?
2 ответа:
Документация для
Image.open
говорит, что он может принимать файлоподобный объект, поэтому вы должны быть в состоянии передать объектio.BytesIO
, созданный из объектаbytes
, содержащего закодированное изображение:from PIL import Image import io image_data = ... # byte values of the image image = Image.open(io.BytesIO(image_data)) image.show()
Вы можете попробовать это:
image = Image.frombytes('RGBA', (128,128), image_data, 'raw')
Исходный Код:def frombytes(mode, size, data, decoder_name="raw", *args): param mode: The image mode. param size: The image size. param data: A byte buffer containing raw data for the given mode. param decoder_name: What decoder to use.