画像からGPSメタデータが削除されたことを確認
写真のメタデータを削除前と削除後で比べ、位置情報が残っていないことを確かめます。例では緯度・経度・高度の3つのタグが削除済みとして示され、GPSのタグが1つでも残れば確認は不合格になります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。
位置情報メタデータを削除したと宣言するだけでなく、結果を確実に検証することが重要です。この機能は、削除処理の前後に取得した画像メタデータを比較し、GPSに関係する項目を再帰的に検出して、処理後に一つも残っていないことを確認します。削除された正確なパスを報告するため、自動プライバシーチェック、公開ワークフロー、監査記録に利用できます。GPSタグが一つでも残っている場合は、誤解を招く成功結果ではなくエラーを返します。
削除処理の前後で比較可能なメタデータを取得します
可能な限り同じメタデータ読取ツールを使い、元画像と処理後画像から情報を抽出してください。同じツールを使うと名前空間の名称と階層が一致し、削除項目のレポートを解釈しやすくなります。
本機能は両方のオブジェクトを再帰的に走査するため、<code>EXIF.GPSLatitude</code>のようなカメラ項目、<code>XMP.exif:GPSLongitude</code>のようなXMPキー、<code>GPS</code>オブジェクト内の値を認識できます。入力するのは画像バイトではなくメタデータです。
したがって、抽出と削除のワークフローが作成した証拠を検証しますが、ファイル自体は編集しません。どの位置情報が存在していたかを示せるよう、削除ツールを実行する前のスナップショットを保存してください。カメラ、著作権、向き、説明などの項目は残っていてもエラーになりません。
監査では、二つのスナップショットを同じ処理IDに関連付け、対象の入力ファイルと出力ファイルに正確に対応していることをご確認ください。
確認結果と削除済みタグの一覧を読み取ります
処理前からGPSタグがない場合も有効です。処理後も安全であることを確認し、削除一覧は空になります。判定には座標値ではなく、メタデータのキー名とGPS名前空間を使います。
そのため、値がゼロ、空、またはnullでも、タグが存在すれば残存として扱います。値が利用できるかを推測せず、項目の存在自体を調べる慎重な方式です。空のGPSコンテナは末端のメタデータを含まないためタグとして数えません。
パスは決定的に並べ替えられるので、オブジェクトの登録順序に左右されず、結果の保存、実行間の比較、厳密な削除ポリシーの適用が可能です。
位置情報が残っている場合は処理を停止します
削除ツールがEXIFのGPS項目を省略したか、XMPの位置プロパティを保持したか、別の名前空間へメタデータを書き直した可能性を調査します。適切なポリシーで削除をやり直し、新しい出力からメタデータを抽出して、再度確認してください。失敗時に安全側へ倒すことで、一部の座標だけが消えた不完全な処理を成功と誤認しません。
走査には深さとノード数の上限があり、不正または非常に大きな入力による無制限な資源消費を防ぎます。また、ネットワーク、現在時刻、乱数を使わない決定的な処理です。ファイル名、画像内の表示、説明文、サイドカーファイル、資産データベースも位置を漏らす場合があるため、より広いプライバシー対策の一部としてご利用ください。
活用例
安全でない写真公開を停止
処理済み画像にGPS項目が残っている場合、CMSや公開ジョブを停止します。
メディアのプライバシー工程を監査
元データとサニタイズ後データの間で消えたGPSパスを正確に記録します。
メタデータ削除ツールをテスト
固定した前後の例を使い、ライブラリ、エンコーダー、削除方針の変更による不具合を検出します。
よくある質問
この機能は画像からGPSメタデータを削除しますか?
いいえ。 別の削除処理の前後に解析したメタデータを検証し、消えたGPSタグを報告します。
入れ子のEXIFおよびXMP構造に対応していますか?
はい。 入れ子のオブジェクトを走査し、GPS接頭辞の項目とGPS名前空間内の値を認識します。
値がnullまたは空のGPSタグも残存扱いですか?
はい。 現在の値が利用できないように見えても、プライバシー確認ではタグの存在を検査します。
削除後にGPSのタグが残っていた場合はどうなりますか?
成功とは報告せずに確認が失敗し、残ったタグの場所を示します。その画像は安全とみなさず、削除をやり直し、新しいファイルからメタデータを取り出して再確認してください。
値が空やゼロのGPSタグも残っているとみなされますか?
はい。判定は値ではなくタグの名前で行うため、空欄やゼロのGPSの項目も残っているものとして数えます。中身のない空のGPSのまとまりは数えません。
もともと位置情報のない画像も確認できますか?
できます。削除前のメタデータにGPSのタグがなくても比較は有効で、削除後も位置情報がないことを確認し、削除されたタグは空の一覧で返します。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/image/metadata-gps-strip-confirm \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"before_metadata":{"EXIF":{"Make":"Example Camera","GPSLatitude":"51 deg 30'\'' 26.00 N","GPSLongitude":"0 deg 7'\'' 39.00 W"},"XMP":{"Creator":"Studio"}},"after_metadata":{"EXIF":{"Make":"Example Camera"},"XMP":{"Creator":"Studio"}}}'const res = await fetch("https://api.kit.forhosting.com/image/metadata-gps-strip-confirm", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"before_metadata": {
"EXIF": {
"Make": "Example Camera",
"GPSLatitude": "51 deg 30' 26.00 N",
"GPSLongitude": "0 deg 7' 39.00 W"
},
"XMP": {
"Creator": "Studio"
}
},
"after_metadata": {
"EXIF": {
"Make": "Example Camera"
},
"XMP": {
"Creator": "Studio"
}
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/metadata-gps-strip-confirm",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"before_metadata": {
"EXIF": {
"Make": "Example Camera",
"GPSLatitude": "51 deg 30' 26.00 N",
"GPSLongitude": "0 deg 7' 39.00 W"
},
"XMP": {
"Creator": "Studio"
}
},
"after_metadata": {
"EXIF": {
"Make": "Example Camera"
},
"XMP": {
"Creator": "Studio"
}
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/metadata-gps-strip-confirm", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"before_metadata":{"EXIF":{"Make":"Example Camera","GPSLatitude":"51 deg 30\' 26.00 N","GPSLongitude":"0 deg 7\' 39.00 W"},"XMP":{"Creator":"Studio"}},"after_metadata":{"EXIF":{"Make":"Example Camera"},"XMP":{"Creator":"Studio"}}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"before_metadata":{"EXIF":{"Make":"Example Camera","GPSLatitude":"51 deg 30' 26.00 N","GPSLongitude":"0 deg 7' 39.00 W"},"XMP":{"Creator":"Studio"}},"after_metadata":{"EXIF":{"Make":"Example Camera"},"XMP":{"Creator":"Studio"}}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/metadata-gps-strip-confirm", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"before_metadata": {
"EXIF": {
"Make": "Example Camera",
"GPSLatitude": "51 deg 30' 26.00 N",
"GPSLongitude": "0 deg 7' 39.00 W"
},
"XMP": {
"Creator": "Studio"
}
},
"after_metadata": {
"EXIF": {
"Make": "Example Camera"
},
"XMP": {
"Creator": "Studio"
}
}
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.metadata_gps_strip_confirm",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_mb | 15 |
max_megapixels | 12 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
削除処理の前後で比較可能なメタデータを取得します
解析したオブジェクトを<code>before_metadata</code>と<code>after_metadata</code>として送信します。
確認結果と削除済みタグの一覧を読み取ります
成功レスポンスは、処理後のスナップショットに認識可能なGPSタグがないことを示します。<code>confirmed</code>はtrue、<code>gps_tags_after</code>はゼロとなり、<code>removed_tags</code>には処理前に存在したパスが安定した順序で表示されます。<code>removed_count</code>は一覧の件数、<code>gps_tags_before</code>は当初の露出件数を示します。
位置情報が残っている場合は処理を停止します
処理後のスナップショットにGPSタグが一つでも含まれると、<code>invalid_input</code>を返し、残っているパスをメッセージに示します。この結果は削除処理の失敗として扱い、プライバシー保護済みの画像として公開、アップロード、メール送信、保管を行わないでください。
技術的な質問
GPSタグが残っている場合はどうなりますか?
残存パスを列挙したinvalid_inputエラーとなり、不完全な削除を成功として扱うことを防ぎます。
APIによる確認の料金はいくらですか?
1回のリクエストは$0.002です。ブラウザー版も同じ決定的な中核ロジックを使用します。