0

ライブラリ Libpng を使用して、深さ 1 ビット (2 色) または 2 ビット (4 色) の PNG 画像を生成したいと考えています。

誰もそれを行う方法を知っていますか? 例をテストしましたが、それらはすべて 8 ビットの色深度で動作するようです。

私は png_set_IHDR を知っていますが、テストした例では、png_set_IHDR の深度パラメータを 8 から 2 または 1 に変更すると、プログラムは 2 または 4 の 1 つのピクセルを描画します。png_malloc 関数で作成されたメモリ割り当てが原因だと思います。

私が変更しようとしている例 ( http://www.lemoda.net/c/write-png/ ) では、png_malloc 関数がイメージのすべてのピクセルを sizeof uint8_t で割り当てます。

png_malloc (png_ptr, sizeof (uint8_t) * bitmap->width * pixel_size);

1 ビットまたは 2 ビットのピクセルを割り当てる方法を教えてください。

ありがとうJo2s

4

1 に答える 1

1

png_set_IHDR では、bit_depth パラメーターはすべてのカラー コンポーネントのビット深度を設定します。PNG_COLOR_TYPE_RGB と合わせて、赤コンポーネント用に 1 ビット、緑用に 1 ビット、青用に 1 ビットになります。

PNG_COLOR_TYPE_PALETTE で png_set_IHDR を呼び出す必要があります。次に、bit_depth が 1 の場合は 2 色 (0 と 1) のパレットが必要であり、bit_depth が 2 の場合は 4 色 (0 から 3.) のパレットが必要です。

于 2013-05-22T02:30:42.307 に答える