我试图使用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预览版)。图像应该是黑色的,但事实并非如此。
我做错了什么?
答案 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()