Python Pillow不生成真正的1Bit单色图像

时间:2016-03-31 00:44:19

标签: python bitmap grayscale imaging monochrome

在python中,我使用以下代码创建1bpp图像:

import Image
img = Image.open(filename)
img = img.convert('1')
pix = img.load()

我在Stack上找到了这段代码:Can't format BMP image data to 1 bit per pixel in PIL

此代码生成看似单色的位图,但是当您在十六进制编辑器中查看数据时,黑色是FF是单个像素,白色00是单个白色像素。这意味着数据是8bpp而不是像PIL文档建议的那样1bpp(https://pillow.readthedocs.org/en/3.1.x/handbook/concepts.html?highlight=bit)。我已经证实这是真的,因为当我用80(128)替换FF(255)时,灰色被引入到图像中。使用真正的单色位图图像,这不会导致任何灰色。

这是因为真正的单色图像是每像素1位。这意味着这两个字节,例如AA AA,将产生16像素的棋盘黑/白图案,而在8bpp中,它将产生两个灰色像素。

我发现PIL的每像素1位模式始终会生成灰度。有没有人知道另一个可以帮助我生成真正的1bpp的库,或者知道如何有效地将8位转换为1位?

我需要这个的原因是因为我试图创建一个可以存储在激光打印机上的图像。打印机需要1bpp,因为激光打印机实际上不能打印灰色。它使用抖动使外观变灰。

0 个答案:

没有答案