【发布时间】:2012-04-12 05:49:11
【问题描述】:
如何从 PIL Image 对象创建一个 pickleable 文件,以便您可以将这些图像保存为单个 pickle 文件,然后上传到另一台计算机,例如运行 PIL 的服务器并在那里解压它?
【问题讨论】:
标签: python python-imaging-library pickle
如何从 PIL Image 对象创建一个 pickleable 文件,以便您可以将这些图像保存为单个 pickle 文件,然后上传到另一台计算机,例如运行 PIL 的服务器并在那里解压它?
【问题讨论】:
标签: python python-imaging-library pickle
您可以将 Image 对象转换为数据,然后您可以腌制它:
image = {
'pixels': im.tostring(),
'size': im.size,
'mode': im.mode,
}
然后回到图像:
im = Image.fromstring(image['mode'], image['size'], image['pixels'])
注意:正如astex 所提到的,如果您使用的是 Pillow(建议使用 Pillow,而不是 PIL),则 tobytes() 不推荐使用 tostring() 方法。对于frombytes(),fromstring() 也是如此。
【讨论】:
Image.tostring() 现在在Pillow 中被弃用,取而代之的是Image.tobytes()。为后人着想,可能还是把上面的改一改(或者至少留个注)吧。
Gerald 使用关键字 args 的回答略有不同
创建可腌制对象
image = {'data': im.tostring(), 'size':im.size, 'mode':im.mode}
或
image = dict(data=im.tostring(), size=im.size, mode=im.mode)
解压回到图像
im = Image.fromstring(**image)
【讨论】: