使用Pillow(PIL)在Python中生成图像

时间:2014-04-09 08:28:09

标签: python pillow

我试图使用Python(v2.7.2)和Pillow(v2.4.0)生成100x100全黑图像,我得到了一个非常奇怪的结果。

这是我的代码

from PIL import Image
im = Image.frombytes('L', (100, 100), bytes([0] * 100 * 100))
im.show()

这是我的结果(放大并请忽略灰色边框 - 它来自OS X预览版)。图像应该是黑色的,但事实并非如此。

我做错了什么?

Image generated by Pillow; something's wrong

1 个答案:

答案 0 :(得分:4)

bytes([0] * 10)的结果是字符串"[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]"。因此,像素的颜色是'[''0'','' '']'符号的ASCII码。

要获取零字节的字节字符串,请改用bytes("\x00" * 100 * 100)。这里\x00是十六进制值00的字节。

实际上你甚至不需要bytes(...)电话。 bytes是仅在Python 3.x中的类型。在Python 2.7.x中bytes只是str的别名。

所以,最终的代码应该是:

from PIL import Image
im = Image.frombytes('L', (100, 100), "\x00" * 100 * 100)
im.show()