C ++でサムネイルビューアを作成しています。
最初に EXIF 情報を使用して画像のサムネイルを取得しましたが、EXIF のサムネイルは不良で、黒い帯が表示されています。jpeg の埋め込みサムネイルを取得したいのですが、どうすればよいですか?
別の質問: jpeg の埋め込みサムネイルは EXIF サムネイルと同じですか?
C ++でサムネイルビューアを作成しています。
最初に EXIF 情報を使用して画像のサムネイルを取得しましたが、EXIF のサムネイルは不良で、黒い帯が表示されています。jpeg の埋め込みサムネイルを取得したいのですが、どうすればよいですか?
別の質問: jpeg の埋め込みサムネイルは EXIF サムネイルと同じですか?
EXIF サムネイルが悪い場合は、JPEG を完全にデコードしなくても、JPEG 自体から独自のサムネイルを生成できます。
EPEGのソース コードを探します。これは SourceForge の Enlightenment プロジェクトの一部であり、1 年前の古い EFL の一部でした。いくつかの古い SVN コミットから、または出回っている可能性のあるソース tarball から、まだ掘り起こすことができます。
基本的に、EPEG が行うことは、画像から DCT 係数を収集し、それらに対して再スケーリング操作を実行することです。DCT 係数は通常、ピクセルの 8x8 ブロックの基本係数として使用されます。1ピクセルとして扱うことができます。その結果、元の画像の正確に 1/8 のサイズの (計算を必要としない) サムネイルが作成されます。画像データと同じように、目的の寸法に再スケーリングします。
サムネイルを持つ JPEG ファイルについて人々が話すほとんどの場合、それらはファイルが JPEG-EXIF であり、EXIF データにサムネイル画像が含まれていることを意味します。
ただし、 JFIF 1.02がサムネイル画像をサポートしていることは事実です。サムネイルは、JFIF APP0 マーカーまたは公式の JFXX APP0 拡張マーカーに格納できます。サムネイルは、圧縮されていない RGB、JPEG、またはパレットのいずれかです。詳細について は、 http://en.wikipedia.org/wiki/JPEG_File_Interchange_Format#JFIF_segment_formatを参照してください。
最速で推奨される方法はライブラリです。
たとえば、www.exiv2.orgは、埋め込みサムネイルと EXIF 情報抽出用のライブラリを提供できます。解決策はたくさんありますが、私はこれが良い解決策だと思います。
私の目には www.exiv2.org は悪い解決策です。他のプロジェクトへの依存が多すぎます。たとえば、Expat と zlib です。自分でサポートできる軽量のソリューションを考え出す場合は、独自の EXIF デコーダーを作成することをお勧めします。