2

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を保存する方法を知っている人はいますか、それとも別の高速な方法がありますか?

4

1 に答える 1