EXIF 削除のしくみ
JPEG ファイルは、2 バイトの SOI シグネチャ(0xFFD8)直後から始まる、APP マーカーと呼ばれるタグ付きセグメントの連続です。EXIF データは APP1 に存在し、GPS は同じ APP1 ブロック内にサブ IFD として含まれ、IPTC は APP13 に存在します。削除ツールはすべてのマーカーをたどり、メタデータを含むものを識別して削除し、残りのペイロードを有効な JPEG として再組み立てします。
- APP マーカーの解析. ツールは生の ArrayBuffer を読み取り、JFIF マーカーシーケンスをバイト単位でたどります。各 2 バイトのマーカータグがセグメントタイプを識別します:APP0(JFIF ヘッダー)、APP1(EXIF と XMP)、APP13(Photoshop と IPTC)、APP15 まで続きます。パーサーは何も変更する前に、各セグメントのオフセットとバイト長を小さなテーブルに記録し、元のバッファをメモリ内に保持します。
- EXIF タグのデコード. APP1 ペイロードは 4 つのイメージファイルディレクトリを持つミニ TIFF 構造です:0th IFD(主画像属性)、Exif SubIFD(露出、レンズ、焦点距離、ISO)、GPS IFD(緯度、経度、高度、方位)、1st IFD(埋め込みサムネイル)。各タグは数値コード、データ型(バイト、ショート、ロング、有理数、ASCII 文字列)、値を持ちます。ツールは piexifjs のタグ辞書を使って数値コードを人間が読める名前にマッピングし、IFD でグループ化されたメタデータパネルに表示します。
- GPS タグのフラグ付け. GPS IFD 内のタグはすべて赤いプライバシーバッジでハイライトされます。緯度と経度は 3 つの有理数(度、分、秒)と方位参照方向(N または S、E または W)として保存されます。ツールはそれらを小数点以下 6 桁の符号付き十進度に変換(赤道での精度約 11cm)し、OpenStreetMap リンクとともに GPS パネルに表示します。クリックした場合のみリンクが開き、タイルリクエストは発生しません。
- メタデータの削除. JPEG ファイルのデフォルトパスでは、piexifjs を使用して APP1 セグメントを完全に削除し、ピクセルデータはそのままで新しい dataURL を返します。「向きを維持」がオンの場合、ツールは削除前に
<canvas>上で元のOrientationタグ値(1–8)に合わせて画像を回転させるため、視覚的な結果がカメラの意図と一致します — 回転はメタデータフラグに依存するのではなくピクセルに焼き付けられます。 - キャンバス再エンコードパス. 「ICC カラープロファイルを維持」がオフの場合、ツールは画像を隠れた
<canvas>に描画し、canvas.toBlob('image/jpeg', quality)を呼び出します。このパスはすべて(EXIF、XMP、IPTC、ICC プロファイル、サムネイル)を削除し、60 から 100 の JPEG 品質スライダーを操作できます。デフォルトは 92 で、ほとんどの写真で元のサイズの数パーセント以内、ソースと区別がつかない品質のファイルを生成します。 - クリーンなファイルのダウンロード. クリーンな Blob は
<original-name>-stripped.jpgという名前のダウンロードとして提供されます。ツールは結果を再解析し、ダウンロードリンクが表示される前に EXIF GPS セクションが空であることを確認するため、「削除済み」とラベルされながら位置情報タグが残っているファイルを受け取ることはありません。PNG と WebP ファイルはそもそも EXIF を含まないため、それらのフォーマットではツールは「EXIF なし」メッセージを表示して削除ステップをスキップします。
写真を共有する前に EXIF を削除する理由
- 位置情報のプライバシー. スマートフォンはデフォルトですべての写真に正確な GPS 座標を埋め込みます。レストラン、オフィス、自宅で撮影した JPEG は、そのメタデータに約 5 メートル精度の住所情報を持っています。SNS への投稿、見知らぬ人へのメール、公開サポートチケットへの添付前に GPS タグを削除することで、その位置フィンガープリントを完全に除去できます。
- 出版における匿名性. ジャーナリスト、活動家、内部告発者は写真を提出する前に EXIF を削除します。カメラのシリアル番号、レンズファームウェアバージョン、作成タイムスタンプはすべて他の公開済み画像と照合して撮影者を特定するために使用できます。そのタグを削除することは、特定の物理デバイスに名前が結びつけられるべきでない人にとって基本的なオペレーショナルセキュリティです。
- ファイルサイズの削減. 一般的なスマートフォンの JPEG は APP1 セグメントに 5〜15 KB のメタデータを持ちます(160×120 の埋め込みサムネイルを含む)。5 MB の写真に比べれば小さいですが、1,000 枚の商品画像のバッチ処理でそれを削除すると、アップロード往復ごとに 5〜15 MB 節約できます。商品カタログ、ストックフォトライブラリ、Pinterest エクスポートをトリミングするときに役立ちます。
- カメラのフィンガープリントを削除. カメラのメーカー、モデル、ファームウェアバージョン、レンズ識別子、シャッター作動回数は、EXIF が他の点では目立たない場合でも別々のアップロード間で写真をリンクできるフィンガープリントを形成します。ハードウェアを明かさずに画像を共有する場合(バグレポート、コンテストの応募、匿名ポートフォリオ)、Exif SubIFD がその識別情報の場所です。それを削除すれば、リンクが切れます。
主な活用シーン
EXIF 削除は、写真が手渡しされる際にそれが含むメタデータが送信者または被写体に問題を引き起こす可能性があるときに必要になります。
- SNS へのアップロード:ほとんどのプラットフォームはサーバーサイドで EXIF を削除しますが、クライアントサイドで先に削除することで、元の座標がプラットフォームのサーバーに一切送信されなくなります。パイプラインが漏洩(または差し押さえ)されても、送信されていないため元の GPS はログに残っていません。
- ジャーナリズムとドキュメンタリー写真:通信社や写真部はクリーンなメタデータを必要とするため、著作権表示とキャプションデータが記者のカメラではなく担当部署によって管理されます。AP・ロイター・AFP の写真編集者はすべて、配信前の受信画像をメタデータスクラブステップにかけます。
- 不動産・商品リスティング:不動産業者や e コマースの販売者は物件や倉庫の住所で撮影した写真をアップロードすることが多くあります。アップロード前に GPS を削除することで、リスティングがファイル内の正確なビジネス住所を意図せず公開することを防げます(倉庫が個人住宅である場合や物件がまだ入居中の場合に特に有効です)。
実際の例
最近の iPhone で撮影した 3.5 MB の JPEG には約 12 KB の APP1 メタデータが含まれます:方位と高度を含む GPS 座標、ミリ秒単位の撮影タイムスタンプ、カメラモデルとレンズ識別子、ホワイトバランス設定、160×120 の埋め込みサムネイル。デフォルトの piexif パスで削除後、ファイルは 3.488 MB になります。12 KB 軽量化され、元と完全に同じピクセルで、位置情報のピングもありません。上の GPS パネルでダウンロード前にどの座標が削除されたかが正確に表示されます。
EXIF メタデータとは何ですか?
EXIF(Exchangeable Image File Format)は、デジタルカメラやスマートフォンが画像ファイル内にメタデータを保存する方法を定義する標準規格です。一般的なスマートフォンの JPEG には、カメラのメーカー・モデル、レンズの焦点距離、シャッタースピード、ISO、正確な GPS 位置情報(数メートルの精度)、作成タイムスタンプ、小さな埋め込みサムネイルが含まれています — レンダリングされた画像自体には見えませんが、OS のファイルブラウザやほとんどの写真編集ツールを含む EXIF 対応アプリケーションからは読み取り可能です。
写真を共有する前に EXIF を削除すべきなのはなぜですか?
GPS タグは写真が撮影された場所を数メートル単位で公開します。EXIF を削除せずに写真を共有すると、ファイルを受け取ったすべての人とその位置情報を共有することになります。カメラのシリアル番号やレンズ識別子も、別々のアップロード間で撮影者を特定するフィンガープリントになり得ます。これは匿名で公開する人にとって重要な問題です。削除することでファイルがデバイスを離れる前にこれらすべてを取り除きます。
画質に影響しますか?
デフォルトの piexif パスは画像ピクセルに触れずに APP1 セグメントを削除するため、品質は元と完全に同一です。キャンバス再エンコードパス(「ICC カラープロファイルを維持」がオフ、または回転した画像で「向きを維持」がオンの場合に使用)は、選択した JPEG 品質スライダー値でピクセルを再エンコードします — ほとんどの写真でソースに近い視覚結果を保つために、スライダーを 95 以上に設定してください。
iPhone の HEIC ファイルはどうなりますか?
HEIC 削除はブラウザのネイティブ HEIC サポートに依存します。Safari 13 以降は HEIC をネイティブでデコードしますが、Chrome と Firefox は対応していません。お使いのブラウザが HEIC を表示できない場合は、まず iPhone の「JPEG に書き出す」オプションを使用してください(iOS 写真アプリ:共有 → オプション → 互換性優先)。その後ここで JPEG をアップロードしてください。変換されたファイルの削除ステップは他の JPEG と同様に機能します。
すべての削除処理はブラウザ内でローカルに実行されます。元の写真はいかなるサーバーにも届かず、クリーンなファイルはアップロード時にメモリに読み込まれた ArrayBuffer から完全に生成されます。上に写真をドロップし、メタデータを確認してから、削除済みのコピーをダウンロードしてください。