画像から EXIF (撮影日時・GPS) を完全に消す手順
SNS にアップする前に写真の EXIF を取り除く方法。撮影機種・タイムスタンプ・GPS 座標が JPEG / PNG にどう埋め込まれているか、ブラウザ内でどう削除できるかを解説します。
EXIF が漏らす情報量は、画像本体より多いこともある
スマートフォンで撮った 1 枚の JPEG には、本人が意識しないまま「いつ・どこで・何で撮ったか」が刻み込まれています。EXIF の中身は撮影日時 (秒単位)、GPS の緯度経度・高度・方角、機種名 (iPhone 15 Pro / Pixel 8 など)、レンズの焦点距離、シャッター速度、ISO、ホワイトバランス、場合によってはカメラのシリアル番号まで含みます。SNS の画像投稿、フリマアプリの出品写真、ブログのアイキャッチ画像、求人サイトのプロフィール用写真 — どれも本文の文章には書かない情報が、画像ファイルの先頭数 KB に並んで埋め込まれています。
危険なのは「見えていない情報」だけが流れることです。GPS タグが残った状態で自宅近くの猫の写真を投稿すれば、緯度経度の少数点 6 桁で住所が秒で特定されます。腕時計のレビュー写真に機種・シリアル番号が乗っていれば、保証書の偽造素材になります。撮影時刻が連続する一連の写真を時系列に並べると、行動パターンと滞在時間が読み取れます。「画像を共有する」操作は、撮影時の状況をまとめてコピーする操作でもあります。
ブラウザだけで EXIF を落とす流れ
全 EXIF をまとめて削除するなら image-exif-strip を開き、JPEG / PNG / WebP をドラッグ & ドロップします。複数枚を同時に投入でき、それぞれのファイルで「削除前に検出されたメタデータの種類」が一覧表示されたうえで、ワンクリックで剥がした版を個別または ZIP でダウンロードできます。JPEG については 再エンコードせず APP1 セグメントだけをバイト単位で切り落とす ため、画質は完全に保持されます。
「撮影日時・カメラ・レンズの情報は記録として残したいが、GPS だけは外したい」という旅行写真やポートフォリオ用途には exif-gps-strip があります。これは EXIF の中の GPSLatitude / GPSLongitude / GPSAltitude / GPSImgDirection などの GPS タグだけをピンポイントで削除し、DateTimeOriginal や Model、LensModel は残します。SNS には載せたいが家の住所は隠したい、という使い分けの典型例です。剥がした後で本当に消えたかを確認したい場合は、同じ画像を image-info に通すと残存メタデータを一覧できます。
JPEG の APP1、PNG の tEXt、WebP の EXIF チャンク
EXIF の格納場所は画像フォーマットごとに違います。JPEG では SOI マーカー (0xFFD8) の直後に APP1 セグメント (0xFFE1) が並び、その中に TIFF/EXIF 形式の IFD (Image File Directory) が入っています。XMP も多くの場合 APP1 に乗ります。PNG では tEXt / iTXt / eXIf チャンクとしてピクセルチャンクとは別に並びます。WebP の場合は RIFF コンテナ内に EXIF と XMP チャンクが独立して存在します。どのフォーマットでもピクセルデータとは別のセクションにメタデータが置かれている ため、ピクセルを触らずにバイト列を編集するだけでメタデータだけを剥がせます。
ツール内部では FileReader API でバイナリを ArrayBuffer として読み込み、JavaScript 側でフォーマットを判定してから対象セグメントの先頭・末尾オフセットを計算して削除します。Canvas を経由する再エンコードでもメタデータは大半が落ちますが、その場合はピクセルが JPEG の再圧縮を一度くぐるため画質が劣化します。バイトオフセットでの切り出しなら劣化はゼロで、出力ファイルは元のピクセルバイトを 100 % 維持します。サムネイル EXIF (EXIF の中に小さな JPEG プレビューが入っている入れ子構造) も同時に削除対象になるため、「サムネイルだけ位置情報が残っていた」という事故も防げます。
「メタ削除サービス」にアップロードするときに失うもの
「exif remover online」を検索すると、ブラウザでファイルを選んでサーバーに送る Web サービスが数多く並びます。家の住所を消すために画像を送る、という構図は本末転倒です。多くの利用規約には「アップロードされたコンテンツに対してサービス改善のための非独占的ライセンスを許諾する」旨が書かれており、削除リクエストを送っても CDN キャッシュ、エラーログ、バックアップに残った断片までは追跡できません。GPS 座標と顔写真と撮影日時を含む画像は AI 学習データとして特に価値が高く、消す対象を消す前に運営者へ渡してしまう構造になっています。
ブラウザ内処理は送信経路がコードに存在しません。image-exif-strip と exif-gps-strip は FileReader API、純粋な JavaScript のバイナリ操作、Blob 出力だけで構成されており、ソースは GitHub で監査できます。DevTools の Network タブを「Preserve log」を有効にした状態で開いて、削除と ZIP ダウンロードを最後まで走らせてみてください。HTML / JS / WASM の初回ロード以外、画像バイトに関連するリクエストは 1 本も流れません。「住所を消す」操作のために「住所を含む画像を運営者に渡す」というねじれを構造から取り除けます。