位置情報を含むメタデータの削除、リサイズ・形式変換、書類の影の除去、 顔に落ちた影の明るさ戻し、AI での超解像度処理を、ブラウザの中だけで行うツールです。 ファイルはサーバへ送信されません。
スマートフォンやカメラで撮った写真には、撮った場所の緯度経度が埋め込まれていることがあります。 Exif と呼ばれる領域に、機種名や撮影日時と一緒に入っています。
見た目には分かりません。そのまま送ったり、掲示板や SNS 以外の場所へ載せたりすると、 自宅や職場の場所が分かってしまうことがあります。
手箱イメージは、画像を読み込んだ時点で何が入っているかを表示します。 位置情報があれば緯度経度まで出します。消す前に、ご自分の目で確かめてください。
画像を読み込むと「どうしますか」が出ます。目的に合うものをお選びください。 どれを選んでも、画像がサーバへ送られることはありません。
はじめの2つがメタデータ(位置情報など)の外し方です。
残りの3つ ―― 書類モード・影を明るくする・ AI で超解像度処理 ―― は絵そのものを直すもので、作り直しになるため メタデータは結果的に消えます。
Exif には「この写真は90度回して表示する」という指定が入っていることがあります。 これを外すときに元の絵をそのまま扱うと、写真が横倒しになります。 手箱イメージは、作り直すときに向きを絵そのものへ反映してから扱うので、 メタデータが無くなっても正しい向きのままです。
書き出したファイルに Exif が残っていないことは、外から確かめられます。
exiftool 書き出したファイル.jpg
GPS の項目が出てこなければ、位置情報は残っていません。
exiftool が無い場合は、ファイルの中に Exif という並びが残っていないかを見ても確かめられます。
机の上で書類を撮ると、手やスマートフォン自身の影、窓からの斜めの光のムラが必ず入ります。 書類モードはその影とムラを消して、スキャナで取り込んだような均一な紙に整えます。
仕組みは粗い格子に落として「紙の明るさの分布」を作り、それでなだらかに割るというものです。 AI のモデルは使いません。取得するものもありません。強さは3段階から選べます。
写真の傾き(台形)は直しません。四隅の検出は白い紙を白い机に置くと外れ、 精度が読めないためです。影とムラの除去だけに絞っています。 カラーの原稿でも使えます(白黒にはしません)。
人物写真で、帽子や髪の影が顔にかかってしまったときに使います。 影の部分をブラシで塗ると、周りの明るさから「本来この辺りはどれくらいの明るさか」を 見積もり、足りない分だけ明るくします。
塗りつぶして隠すのではなく、明るさの倍率を掛けるだけなので、 肌の質感や模様はそのまま残ります。 塗っていない所は1画素も変わりません。こちらも取得するものはありません。
影の部分だけを塗ってください。広く塗りすぎると明るさの基準がずれて効きが弱くなります (塗りすぎても暗くはなりません)。 また、真っ黒に潰れてしまった影は戻りません。元の情報が残っていないためです。
小さい画像を 2倍・4倍に引き伸ばします。ふつうの拡大と違い、 輪郭をくっきり保ったまま大きくできます。長辺や幅を指定した大きさにもできます (AI で 2倍か 4倍にしたあと、Lanczos で指定の大きさへ合わせます)。
仕上がりに「大きさはそのまま(高画質化)」を選ぶと、画素数を変えずに画質だけを整えます。 中ではいったん AI に 2倍で描かせてから元の大きさへ戻し、最後に細部を立てています。 ピントの甘い写真や、一度大きく引き伸ばされた画像によく効きます。
細部を立てる強さは4段階です。圧縮の跡(モスキートノイズ)が目立つ画像では「しない」を選び、 ノイズ除去だけを掛けるほうがきれいになります。跡まで一緒に立ててしまうためです。
AI を選んだときだけ、初回に拡大用のデータを取得します(およそ 24MB。画面に大きさを表示します)。 2回目以降はブラウザに残るため、待ち時間はありません。
取得するのはこちらから配る計算用のプログラムと重みだけで、画像は送りません。 絵の種類(写真/イラスト)とノイズ除去の設定で使う重みが変わり、選んだものだけを取りに行きます。 外部の CDN には接続しません。
AI の処理には WebGPU に対応した環境が必要です(新しい Chrome や Edge)。 使えない環境では、その場で通常の拡大に切り替えられます。 大きな画像は横の帯に分けて処理するので、写真の大きさで断ることはありません。
位置情報を扱うツールだからこそ、その画像自体がどこへも送られていないことが大事です。 開発者ツールで、通信をそのまま見ることができます。
blob: で始まる行…worker-…js)。当サイトから1度だけ取りますort-…wasm)と重み(/image/models/…onnx)。
いずれも当サイトから配っていますgooglesyndication.com など)。画像のデータは含まれません
増えるのは「こちらから何かを取りに行く」ものだけで、送るものはありません。
大きさと向きだけを見てください ―― どれも GET で、
本文のあるリクエスト(POST)は1つも出ません。
メタデータの読み取りと削除、拡大縮小、書き出しには外部のライブラリを使っておらず、
ブラウザの機能とこのサイトのコードだけで行っています。
curl -i -X POST --data-binary @写真.jpg https://tebako.ingste.net/image/
405 Method Not Allowed が返ります。読み取り(GET)以外は受け付けません。 本文の大きさも 1 キロバイトまでに制限してあり、画像が入る余地がありません。
| 形式 | 読み込み | メタデータだけ外す | 書き出し |
|---|---|---|---|
| JPEG | ○ | ○ | ○ |
| PNG | ○ | ○ | ○ |
| WebP | ○ | × | ○(環境による) |
| GIF・BMP・AVIF など | △ | × | ×(別の形式で書き出します) |
「メタデータだけ外す」が使えない形式は、作り直しになります。その場合も情報は残りません。 読み込みはブラウザの機能を使うため、対応はお使いのブラウザによって変わります。
画面の組み立てに Preact(MIT)を使っています。 「AI で超解像度処理」を選んだときだけ、推論に ONNX Runtime Web(MIT)を、 拡大の重みに waifu2x / nunif(MIT・Copyright (C) 2019-2023 nagadomi)を使います。 重みは当サイトから配信しており、外部のCDNには取りに行きません。 画像の読み込みと書き出しはブラウザの Canvas API、拡大縮小(Lanczos)、書類モード、 影を明るくする、等倍の高画質化での細部の強調は、いずれもこのサイトのコードで直接行っています。 Exif と PNG のメタデータの読み取り・削除も同じです。 画像を扱う外部ライブラリは使っていません。