2009-08-25 23 views
4

私はサムネイルビューアをC++で作成しています。jpeg画像から埋め込みサムネイルを読み込む方法は?

私はまず画像のサムネイルを取得するためにEXIF情報を利用しますが、EXIFのサムネイルは黒いバンドで悪いです。だから私はjpegの埋め込まれたサムネイルを取得したい、私はこれを行うことができますか?

別の質問: EXIFサムネイルに等しいjpegの埋め込みサムネイルはありますか?

+0

あなたは多くの意味を持っていません。 JFIFファイル内の唯一のサムネイルはEXIFサムネイルです。 JFIFは単一のイメージをファイルに保存することのみを許し、サムネイルはEXIFヘッダーに隠されています。埋め込まれたサムネイルはどういう意味ですか?以下に述べるように、各MCUのDC値から高速サムネイルを作成することができます。これは、元のイメージの1/64になります。 「破損した」サムネイル画像の意味を理解していない。画像が標準の160×120サムネイ画像と同じアスペクト比ではないため、一部のカメラに黒いバーが追加されています。 – BitBank

+0

多くのおかげでBitBank!私は、最初に私は黒い棒について困惑しました、あなたは黒い棒を取り除く方法を知っていますか? – user25749

+1

黒いバーは画像の一部です。それらを削除するには、元の画像サイズに基づいて画像をトリミングする必要があります。例えば元の画像が1600x1200の場合、160x120のサムネイルは同じ比率であるため、黒い棒は表示されません。画像が3888x2592の場合、サムネイルは160x106になります。 – BitBank

答えて

0

最も早く推奨される方法はライブラリです。

たとえば、www.exiv2.orgでは、埋め込まれたサムネイルとEXIF情報抽出用のライブラリを提供できます。多くの選択肢がありますが、これは良い解決策だと思います。

6

EXIFサムネイルが悪い場合は、JPEGを完全にデコードせずに、JPEG自体から独自の画像を生成できます。

のソースコードを検索してください。EPEGこれはSourceForgeのEnlightenmentプロジェクトの一部で、1年前の古いEFLの一部でした。あなたはまだいくつかの古いSVNコミットや、浮遊しているソースtarballからそれを掘り起こすことができます。

基本的には、画像からDCT係数を収集し、それに対するリスケール処理を実行するのはEPEGです。 DCT係数は、通常、8×8ブロックのピクセルの基本係数として使用されます。あなたはの1つをピクセルとして扱うことができます。結果として、オリジナル画像のサイズのちょうど1/8の(計算上自由な)サムネイルが作成されます。画像データを希望の寸法に調整します。

+0

多くの感謝、そこにEPEGの窓のlibはありますか?どのように私は窓の下でそれをコンパイルできますか? – user25749

+0

Enlightenmentプロジェクトのために書かれているので、ソースコードはもともと非常にnix中心ですが、それはまだ非常にOSに依存しないスタイルで書かれています。それはWindows上で、SVNチェックアウトからまっすぐにコンパイルする必要があります。私の知る限り、あらかじめコンパイルされたWindowsのlibはありません。 Windows用のメイクファイルが既に入っていると思います。 – greyfade

+0

私の関連する回答のコメントにいくつかのスナップショットへのリンクがあります: http://stackoverflow.com/questions/1316170/having-an-image-file-buffer-in-memory-what-is-the-fastest- way-to-create-its-thum – greyfade

-2

私の目には、悪い解決策です。他のプロジェクトにはあまりにも多くのデープがあります。例えば、Expatとzlib。自分でサポートできる軽量なソリューションを考え出すには、独自のEXIFデコーダを作成することをお勧めします。

+1

libexif http://libexif.sourceforge.net/は非常にまともな解決策です。 – koan

2

サムネイルを含む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を参照してください。

関連する問題