個々のステップのコードはどこにありますか
C ライブラリが候補になる場合は、C で記述された軽量の JPEG エンコーダーであるjpecを確認する必要があります。これはグレースケール画像のみをサポートすることに注意してください。
メインのエンコード関数 ( jpec_enc_run
) は読みやすく、内部関数を介して上記の各ステップを提供します。
/* open = write JPEG headers */
jpec_enc_open(e);
while (jpec_enc_next_block(e)) {
/* compute the DCT for the current 8x8 block */
jpec_enc_block_dct(e);
/* quantize the DCT coefficients for the current block */
jpec_enc_block_quant(e);
/* re-order the quantized coefficients with the zig-zag pattern */
jpec_enc_block_zz(e);
/* perform entropy coding of the current block and write to the global buffer*/
e->hskel->encode_block(e->hskel->opq, &e->block, e->buf);
}
/* close = write JPEG end of image marker */
jpec_enc_close(e);
これらの個々の手順を 1 つずつ実行して、標準の JPEG 画像を生成できますか?
これは jpec ですぐに利用できるわけではありませんが、その目的のために非常に簡単に変更できるはずです (低レベルの内部関数を公開および/または適応させることによって)。