要为`PIL.Image.frombytes`指定的大小

Ram*_*hum 7 python python-imaging-library

我想从原始数据创建PIL图像.我相信我应该使用PIL.Image.frombytes.但它有一个size论点.我不知道图像的大小,是不是应该作为图像的一部分?我事先并不知道图像的大小.我该如何调用没有大小的函数?

Jan*_*rny 13

既然您澄清了,您不想读取原始像素数据,而是读取内存中的图像文件,解决方案很明确:不要使用frombytes- 它适用于原始像素数据.使用刚打开StringIO:

image = Image.open(StringIO.StringIO(image_data))
Run Code Online (Sandbox Code Playgroud)


ira*_*ari 9

感谢@jan-spurny 提供线索。对于任何需要从字节打开图像的人

from PIL import Image
import io


image_bytes = ...

im = Image.open(io.BytesIO(image_bytes))
Run Code Online (Sandbox Code Playgroud)


Fre*_*Foo 5

所述size参数必须的图像的尺寸,这不是在原始像素缓冲器编码(例如,缓冲区长度的匹配Ñ可以代表任何网格ķ ×像素ķ> 0,ķ ×= Ñ)。你必须提前知道这个尺寸。

一些示例代码来演示tobytesfrombytes

>>> img = PIL.Image.open("some_image.png")
>>> img.size
(482, 295)
>>> raw = img.tobytes()
>>> img2 = PIL.Image.frombytes(img.mode, img.size, raw)
Run Code Online (Sandbox Code Playgroud)