我有一个RGB数据列表:
cdata=[R1, G1, B1, R2, G2, B2,..., Rn, Gn, Bn]
其中每个值都包含在0到255之间。在
我正在尝试使用Pillow5.0.0将此阵列重建为图像。 在Python 2下,我可以通过以下方式将值列表转换为字节字符串:
^{pr2}$然后在base64中重新编码“im”,并在HTML模板中显示为PNG。在
不幸的是,这在Python 3中不起作用,我遇到了如下错误:
UnicodeEncodeError: 'charmap' codec can't encode characters in position 42099-42101: character maps to <undefined>
此外,Pillow5文档现在建议使用
im = Image.open(StringIO(data))
但不能让我的绳子在上面工作。有没有比这更聪明的方法呢?提前非常感谢你的帮助。在
如果您想拥有与Python2和Python3兼容的代码,可以使用struct或array module:
或者:
^{pr2}$使用^{} 。
Image.open
用于打开编码图像(如jpg或png),而不是原始RGB数据。在使用
bytes
构造函数构造所需的字节数据非常简单:然后我们可以创建这样的图像:
^{pr2}$下面是一个使用
frombytes
的示例。这只是使用纯Python,而不是Numpy。如果使用Numpy创建RGB值,那么可以使用Image.fromarray
方法将Numpy数据转换为PIL图像。在这里的重要步骤是将RGB值列表转换为
bytes
对象,这很容易通过将其传递给bytes
构造函数来完成。在输出
相关问题 更多 >
编程相关推荐