プログレッシブ イメージを作成できることは知ってimageinterlace
いますが、進行中の特定のステップを実際に要求できるかどうかを知る必要があります。JPEG ファイルが 3 レベルのスキャンを使用して作成されている場合、それをレベル 2 または 1 のみにダウングレードすることはできますか?
3 に答える
これは、JPEGを作成するときに実際に制御できるものではないようです。
ベースラインJPEGは、プログレッシブエンコーディングもサポートしています。シーケンシャルエンコーディングは一度に1つのブロックの係数を(ジグザグに)エンコードしますが、プログレッシブエンコーディングは、すべてのブロックの同様の位置の係数を一度にエンコードし、次にすべてのブロックの次の位置の係数をエンコードします。したがって、画像がN個の8×8ブロック{B0、B1、B2、...、Bn-1}に分割されている場合、プログレッシブエンコーディングは、すべてのブロック、つまりすべてのi = 0に対してBi(0,0)をエンコードします。 、1、2、...、N-1。これに続いて、すべてのブロックのBi(0,1)係数、すべてのブロックのBi(1,0)番目の係数、すべてのブロックのBi(2,0)番目の係数というようにエンコードされます。ここで、すべての同様の位置の係数がエンコードされると、エンコードされる次の位置は、に示されているように、ジグザグトラバーサルで次に発生する位置であることに注意してください。上の図。
説明を考えると、JPEGインターレースの性質を実際に制御する方法はありません。パスの数は、標準および画像形式自体の一部です。
他のほとんどの画像形式でも同様に制御できません。TGAが2つある場合を除いて、ほとんどの画像形式では、標準で1つだけのインターレース式が明示的に呼び出されます。
JPEG 画像は実際にはインターレースされていません。プログレッシブ JPEG を使用すると、データの 8x8 ブロックごとに DC 係数と AC 係数の範囲を分割できます。これによりデータが洗練されますが、各スキャンはすべてのピクセルに適用されます (実際のインターレースとは異なります)。
JPEG では、プログレッシブ イメージのスキャン数を指定できます。JPEG 用語は「スペクトル選択」です。AC 係数の場合、スキャンの順序も柔軟に指定できます。
問題は、ここでの JPEG の柔軟性が非常に高いため、この柔軟性をすべて活用できるプログラミングまたはユーザー インターフェイスを作成するのが難しいことです。
コンポーネントごとに少なくとも 2 つのスキャンが必要です (そうしないと、プログレッシブになりません)。
Photoshop では、プログレッシブ JPEG のスキャン数 (3、4、または 5) を選択できます。
imageinterlace の $interlace 値は bool ではなく int であるため、値 > 0 はそれを有効にするだけでなく、スキャン数を選択するのではないかと思います。マニュアルはこれを確認していませんが、試してみる価値はあります。
また、スキャン数に関しては、3 未満か 5 を超えるかはわかりません。その場合、値として1を選択しないように、彼らはそれについて言及する必要があると思うでしょう...しかし、誰が知っていますか. 私はそれで少し遊ぶかもしれません。