我正在寻找一种使用 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)
第二种方法(枕头)大约是第一种方法的 10 倍(即使没有对话),但是图像是 8 位 png。我尝试添加线条
im = im.point(lambda i: i/17) # convert values
im.mode = 'L;4'
但后来我得到*** SystemError: unknown raw mode
了,即使在https://github.com/python-pillow/Pillow/blob/master/PIL/PngImagePlugin.py中指定了模式 'L;4'
有谁知道如何用 Pillow 保存 4 位 png,或者有另一种快速的方法吗?