我正在使用需要4bpp索引图像的程序,我想用黑色调色板条目填充1bpp和2bpp图像。我将如何使用Python处理?我看不到使用PIL的方法。
答案 0 :(得分:1)
我对此图像和 ImageMagick 进行了一些实验,该图像包含在大多数Linux发行版中,并且可用于macOS和Windows。
首先是原始图像,然后用抖动减少为16种颜色,然后不使用抖动减少为16种颜色。
带有抖动:
convert paddington.png -colors 16 d.png
不抖动:
convert paddington.png +dither -colors 16 e.png
然后,我查看了ImageMagick生成的图像,它们都具有8bpp!因此,我尝试使用“尊贵” NetPBM套件,发现它将创建一个4bpp映像,因此如下所示:
convert paddington.png +dither -colors 16 ppm:- | pnmtopng > result.png
如果我对此运行pngcheck
,则对我来说看起来像是4bpp PNG:
pngcheck -vv result.png
输出
File: result.png (4857 bytes)
chunk IHDR at offset 0x0000c, length 13
150 x 150 image, 4-bit palette, non-interlaced
chunk PLTE at offset 0x00025, length 48: 16 palette entries
chunk IDAT at offset 0x00061, length 4740
zlib: deflated, 16K window, default compression
row filters (0 none, 1 sub, 2 up, 3 avg, 4 paeth):
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
(150 out of 150)
chunk IEND at offset 0x012f1, length 0
No errors detected in result.png (4 chunks, 56.8% compression).
目前,我建议您考虑使用“脱壳” 来使用ImageMagick和NetPBM。