12

この質問は「未解決の質問」である可能性があり、多くの人はそれをクローズしたいと考えているかもしれませんが、そうしないでください。説明させてください。

ご存知のように、JPEG には 2 種類の圧縮があります (少なくとも Photoshop の保存ダイアログでは)。

  • 最適化され、画像が行単位のようにロードされました
  • プログレッシブ、画像が最初にロードされたモザイクのように、元の解像度まで次第に良くなります

私は以前に多くの PNG/JPEG 最適化の記事を読みましたが、ワイルド ランダムな Google 画像検索から、この素晴らしい第 3 種の圧縮に遭遇しました。問題のJPEGはこれ

http://storage.googleapis.com/marc-pres/boston-event-1012/images/google-data-center.jpg

Chrome/Firefox でリンクをロードしてみてください (IE/Safari では、画像が完全にロードされてから表示されるまでのみ)

あなたは観察することができます:

  1. 画像は最初に白黒でロードされました
  2. その後、ロードされた赤チャンネルのように見えます
  3. 次にロードされたグリーンチャンネル
  4. 最後にロードされたBlueチャンネル

エミュレートされた非常に低速な接続で再度読み込みを試みたところ、JPEG がチャネル順に読み込まれるだけでなく、プログレッシブな方法でも読み込まれることがわかりました。したがって、最初にロードされた画像は白と黒のモザイク、次に緑がかったモザイク、そして徐々にフルカラーのモザイク、最後にフル解像度とフルカラーの画像です。

これは驚くべきテクノロジです。たとえば、各ページにたくさんの写真が掲載されている電子雑誌を作成していて、ユーザーがページをすばやくめくって閲覧できるようにしたいとします。この種の画像がまさに最適です。プレビューを高速化するには、空白と白のサムネイルを読み込みます。ユーザーが残っている場合は、元の画像を完全に読み込みます。

私の質問は次のとおりです。Python Pillow や ImageMagick、またはその他のオープン ソースソフトウェアを使用して、このようなイメージを生成するにはどうすればよいですか?

この質問が不適切だと思われる場合は、コメントしてください。閉じないでください。

更新 1:

Google がこの技術をすべての JPEG 画像で使用していることが判明しました1 , 2たとえば、これ

更新 2: 別の手がかりを見つけました

4

1 に答える 1

8

JPEG ファイル内の画像データはさまざまな方法でスライスでき、スライス (通常は「スキャン」と呼ばれます) はさまざまな順序でファイルに保存できます。

ほとんどの JPEG ファイルでは、ファイルの最初のスキャンには、イメージのすべてのカラー コンポーネントが含まれており、カラー イメージの場合はインターリーブされます。非プログレッシブ JPEG では、ファイルにはその 1 つのスキャンだけが含まれます。プログレッシブ JPEG では、他のスキャンが続き、それぞれに 1 つまたは複数のコンポーネントが含まれる場合があります。

しかし、そのようにしなければならないことは何もありません。ファイルの最初のスキャンにすべての色成分が含まれていない場合、そのようなファイルは「非インターリーブ」と呼ばれます。

サンプル ファイルはインターリーブされてお​​らず、プログレッシブでもあります。プログレッシブ非インターリーブ JPEG は、非プログレッシブ非インターリーブ JPEG よりも広くサポートされているようです。

標準の IJG libjpeg ソフトウェアは、インターリーブされていないファイルを作成できます。簡単ではありませんが、ファイルに記載されているオプションを使用して、そのcjpegユーティリティを使用できます。-scanswizard.txt

于 2013-04-10T17:53:38.243 に答える