Pythonでグレースケール画像を4ビットpngとして保存する高速な方法を探しています。保存しなければならない画像はかなり大きいので、保存にかなりの時間がかかります。
私の画像が numpy-array (dtype=8-bit) に保存されているとします。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)
2 番目のアプローチ (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を保存する方法を知っている人はいますか、それとも別の高速な方法がありますか?