3

libjpeg を使用して、可能であれば、前の行をすべて読み取らずに、JPEG 画像の途中から行を読み取りたいと考えています。これはできますか?

4

1 に答える 1

2

答えはほぼ間違いなく「できますが、必要以上の労力がかかります」です。

JPEG イメージは、圧縮されたイメージ全体にグローバルな情報、またはイメージの特定の部分に関連する情報のいずれかを含むマーカーのストリームです。圧縮は、画像をカラー プレーンに分割し、場合によってはカラー スペースをカラー情報をダウンサンプリングできるカラー スペースに変更し、各プレーン内で 8x8 ピクセル ブロックを操作することによって機能します。

たとえば、基本ブロックと各ブロック内の係数のみを転置することにより、ブロック全体のみで構成されるようなサイズになっている場合、圧縮画像を 90 度回転させることができます。つまり、解凍、実際の画像の回転、および再圧縮を行いません。

それを考えると、ライブラリに入る途中でマーカーストリームを解析し、画像にグローバルなすべてのマーカーを渡し、画像サイズに関連するものを変更し、切り抜き四角形の外側にある係数を含むマーカーをドロップすることになります。

基本ブロックを完了するためのトリミングの制限が粗すぎる場合は、結果をさらにトリミングする必要があります。

私にははっきりしないのは、結果がライブラリから出てくるときに結果をトリミングするという代替手段に真の勝利があるかどうかです。このライブラリは高度な構成が可能であるため、トリミング四角形の外側のすべてのピクセルを破棄し、保持したいピクセルのみを保存する非圧縮データ コンシューマ関数を提供できます。

于 2010-09-10T00:59:46.773 に答える