web-dev-qa-db-ja.com

JPEGJFIFファイルをJPEGExif形式に変換する方法は?

最近、カメラのSDカードをWindows 7 PCに挿入し、その上で写真の閲覧を開始しました。一部が正しく配置されていないことに気付き、Windowsフォトビューアーに含まれているrotate featureを使用して、必要に応じて表示します。

私が知らなかったのは回転機能を使用すると、次または前のボタンを押すと画像も上書きされます品質が低下する可能性があります(これは私の意見では悪い考えです、アプリ少なくとも、そのような機能を使用したときに何が起こるかについてユーザーに警告する必要があります)。

その後、SDカードをカメラに再度挿入すると、ひどい驚きが起こりました。回転した画像をプレビューできなくなりました。代わりに、「互換性のないJPEG形式」という黒い画面が表示されました。他のファイル(変更されていない)はまだ正常に機能しています。

何が起こったのかを理解するために、カメラからJPEGファイルを開き、Windows7で生成されたファイルを16進エディターで開きました。違いは次のとおりです。

カメラのJPEGファイルにはExifタグが含まれています(ヘッダーに0xE1が含まれています)。他のJPEGファイル(Windows 7)には、最初にJFIFタグがあり、次にExifタグ(ヘッダーに0xE0があります)が続きます。

したがって、よく理解していれば、どちらもJPEGファイルですが、内部形式が異なります。

これが私の質問です:(何らかのツールを使用して)JFIFファイルをExif形式に変換することは可能ですか?

元のカメラファイルが再エンコードされたため、品質が低下することを理解しています(元のファイルを元に戻すことはできません)。それらをJFIFからExifに戻すかどうかを知りたい(可能であれば2度目の品質低下なしで...)

4
tigrou

JPEG標準には、特定の理由で作成されたファイル準拠のバリエーションがいくつかあります。よく使用される2つのタイプは、EXIFとJFIFです。

どちらのファイルもJPEGファイルとして分類され、JPEG拡張子の付いたコンピューターに表示されますが、違いは、カメラまたはコンピューターでの処理中に元の画像に追加される補足データによるものです。このデータは通常、「APPn」と呼ばれる領域に格納されます(「n」は0、1、2などの数字です)。

ほとんどのイメージングソフトウェアアプリケーションは両方のタイプのJPEGファイルを開くことができますが、ほとんどのデジタルカメラはEXIF形式の画像しか表示できません。 Photoshopなどの画像プログラムでEXIFファイルを開いて保存すると、ファイルがJFIF形式に変更され、カメラで画像を開くことができなくなり、撮影データが失われます。

[〜#〜] exif [〜#〜]

EXIF形式はデジタルカメラで使用するために作成されました。APPnは、画像が記録されたときのカメラの状態(シャッター、絞りのホワイトバランスなど)などの情報を保存します。

[〜#〜] jfif [〜#〜]

JFIFのバリエーションは、イメージング業界で一般的に使用されており、ほとんどのソフトウェアアプリケーションはこの形式でファイルを保存します。 JFIFは、APPnを使用して、著作権やキャプション(IPTCテキスト)などの情報や、カラーマネジメント用のプロファイル情報(icmデータ)を保存します。

ExifTool を試してこのコマンドを実行できますが、撮影データが失われるため、カメラが画像を表示できない可能性があります。

exiftool "-exif:all<jfif:all" "-thumbnailimage<jfif:thumbnailimage" FILE

4
user181734

ウィキペディアの記事の互換性セクションから JPEGファイル交換形式

新しいExchangeableイメージファイル形式(Exif)はJFIFに匹敵しますが、2つの標準は相互に互換性がありません。これは、両方の標準で、特定のアプリケーションセグメント(JFIFの場合はAPP0、Exifの場合はAPP1)がイメージファイルの最初である必要があると指定されているためです。実際には、多くのプログラムとデジタルカメラは、両方のアプリケーションセグメントが含まれるファイルを生成します。これはほとんどのデコーダーの画像デコードには影響しませんが、設計が不十分なJFIFまたはExifパーサーはファイルを正しく認識しない可能性があります。

上記に基づいて、16進エディターでAPP0セグメント/マーカーを削除し、APP1セグメント/マーカーを追加するだけで(たとえば、Exifデータを操作する別のツールを使用して)JFIFをExifに変換できます。または、Exifデータを追加するだけで、ほとんどのプログラムで画像を開くことができます。

1
Kenny Evitt