我正在寻找一种使用 python 将灰度图像保存为 4 位 png 的快速方法。我必须保存的图像很大,因此保存它们需要相当长的时间。
假设我的图像存储在 numpy 数组中(dtype=8 位)。使用 PyPng 我可以这样做:
import png
data = map(lambda x: map(int, x/17), data)
png.from_array(data, 'L;4').save(filename)
这将保存正确的 4 位 png。有了 Pillow,我可以做到:
import PIL.Image as Image
im = Image.fromarray(data)
im.save(filename)
第二种方法(Pillow)的速度大约是第一种方法的 10 倍(即使没有对话),但图像是 8 位 png。我尝试添加行
im = im.point(lambda i: i/17) # convert values
im.mode = 'L;4'
但后来我得到*** SystemError: unknown raw mode
,即使模式'L;4'被指定为https://github.com/python-pillow/Pillow/blob/master/PIL/PngImagePlugin.py
有谁知道如何用 Pillow 保存 4 位 png 或者有其他快速方法吗?