J'ai cette image avec une taille de 128 x 128 pixels et RGBA stockés sous forme d'octets dans ma mémoire. Mais
from PIL import Image
image_data = ... # byte values of the image
image = Image.frombytes('RGBA', (128,128), image_data)
image.show()
jette l'exception
ValueError: pas assez de données d'image
Pourquoi? Qu'est-ce que je fais mal?
Vous pouvez essayer ceci:
image = Image.frombytes('RGBA', (128,128), image_data, 'raw')
Code source: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.
La documentation de Image.open
indique qu'elle peut accepter un objet de type fichier, vous devriez donc pouvoir passer un objet io.BytesIO
Créé à partir de bytes
objet contenant l'image encodée:
from PIL import Image
import io
image_data = ... # byte values of the image
image = Image.open(io.BytesIO(image_data))
image.show()