web-dev-qa-db-ja.com

バイトファイルから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:画像データが不足しています

どうして?何が間違っていますか?

36
Michael Dorner

これを試すことができます:

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.
11
Marvelous Jie

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()
101