可拾取图像对象

vij*_*123 9 python pickle python-imaging-library

如何从PIL Image对象创建一个pickleable文件,以便您可以将这些图像保存为单个pickle文件,然后上传到另一台计算机,例如运行PIL的服务器并在那里取消它?

gak*_*gak 17

您可以将Image对象转换为数据,然后您可以将其腌制:

image = {
    'pixels': im.tostring(),
    'size': im.size,
    'mode': im.mode,
}
Run Code Online (Sandbox Code Playgroud)

并回到图片:

im = Image.fromstring(image['mode'], image['size'], image['pixels'])
Run Code Online (Sandbox Code Playgroud)

注:由于astex提到的,如果你使用的枕头(推荐代替PIL),该tostring()方法已经废弃了tobytes().同样用fromstring()frombytes().

  • “Pillow”中现在已弃用“Image.tostring()”,取而代之的是“Image.tobytes()”。为了子孙后代,最好改变上面的内容(或者至少留下注释)。 (2认同)

Joh*_*ooy 9

Gerald的回答使用关键字args略有变化

创造pickleable对象

image = {'data': im.tostring(), 'size':im.size, 'mode':im.mode}
Run Code Online (Sandbox Code Playgroud)

要么

image = dict(data=im.tostring(), size=im.size, mode=im.mode)
Run Code Online (Sandbox Code Playgroud)

unpickle回到图像

im = Image.fromstring(**image)
Run Code Online (Sandbox Code Playgroud)