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

5 投票
1 回答
4150 浏览
提问于 2025-04-18 01:59

我正在用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预览的)。这个图像应该是黑色的,但实际上不是。

我哪里出错了?

Pillow生成的图像;出了一些问题

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()

撰写回答