我正在尝试使用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()
Run Code Online (Sandbox Code Playgroud)
这是我的结果(放大后请忽略灰色边框-它来自OS X预览版)。图像应为黑色,但不是。
我究竟做错了什么?

的结果bytes([0] * 10)是字符串"[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]"。所以,你的像素颜色的ASCII码'[','0',',',' ',和']'符号。
要获取零字节的字节字符串,请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()
Run Code Online (Sandbox Code Playgroud)