使用Pillow(PIL)在Python中生成图像
我正在用Python(版本2.7.2)和Pillow(版本2.4.0)生成一个100x100的全黑图像,但结果却很奇怪。
这是我的代码
from PIL import Image
im = Image.frombytes('L', (100, 100), bytes([0] * 100 * 100))
im.show()
这是我的结果(放大了,请忽略灰色边框 - 那是来自OS X预览的)。这个图像应该是黑色的,但实际上不是。
我哪里出错了?
1 个回答
6
执行 bytes([0] * 10)
这个代码的结果是字符串 "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]"
。所以,你的像素颜色实际上是字符 '['
、'0'
、','
、' '
和 ']'
的 ASCII 码。
如果你想得到一串全是零的字节,可以用 bytes("\x00" * 100 * 100)
。这里的 \x00
是一个十六进制值为 00
的字节。
其实你甚至不需要调用 bytes(...)
。在 Python 3.x 中,bytes
是一种数据类型。而在 Python 2.7.x 中,bytes
只是 str
的一个别名。
所以,最终的代码应该是:
from PIL import Image
im = Image.frombytes('L', (100, 100), "\x00" * 100 * 100)
im.show()