画像を扱う

Tebako イメージについて

位置情報を含むメタデータの削除、リサイズ・形式変換、書類の影の除去、 顔に落ちた影の明るさ戻し、AI での超解像度処理を、ブラウザの中だけで行うツールです。 ファイルはサーバへ送信されません。

位置情報のこと

スマートフォンやカメラで撮った写真には、撮った場所の緯度経度が埋め込まれていることがあります。 Exif と呼ばれる領域に、機種名や撮影日時と一緒に入っています。

見た目には分かりません。そのまま送ったり、掲示板や SNS 以外の場所へ載せたりすると、 自宅や職場の場所が分かってしまうことがあります。

手箱イメージは、画像を読み込んだ時点で何が入っているかを表示します。 位置情報があれば緯度経度まで出します。消す前に、ご自分の目で確かめてください。

5つのやり方

画像を読み込むと「どうしますか」が出ます。目的に合うものをお選びください。 どれを選んでも、画像がサーバへ送られることはありません。

はじめの2つがメタデータ(位置情報など)の外し方です。

メタデータだけ外す(既定)

  • 絵には一切手を触れません。
    画質は1ビットも変わりません
  • JPEG は Exif の入っている区画を、PNG は文字情報の区画を、写さずに飛ばすだけです
  • 色の設定(ICC)は残します
    外すと色味が変わってしまうため

作り直す

  • 大きさや形式を変えたいときはこちら
  • 画像を描き直すので、メタデータは結果的に消えます
  • 画質は選んだ設定によります

残りの3つ ―― 書類モード・影を明るくする・ AI で超解像度処理 ―― は絵そのものを直すもので、作り直しになるため メタデータは結果的に消えます。

向きについて

Exif には「この写真は90度回して表示する」という指定が入っていることがあります。 これを外すときに元の絵をそのまま扱うと、写真が横倒しになります。 手箱イメージは、作り直すときに向きを絵そのものへ反映してから扱うので、 メタデータが無くなっても正しい向きのままです。

ご自分で確かめる方法

書き出したファイルに Exif が残っていないことは、外から確かめられます。

exiftool 書き出したファイル.jpg

GPS の項目が出てこなければ、位置情報は残っていません。 exiftool が無い場合は、ファイルの中に Exif という並びが残っていないかを見ても確かめられます。

書類モード

机の上で書類を撮ると、手やスマートフォン自身の影、窓からの斜めの光のムラが必ず入ります。 書類モードはその影とムラを消して、スキャナで取り込んだような均一な紙に整えます。

仕組みは粗い格子に落として「紙の明るさの分布」を作り、それでなだらかに割るというものです。 AI のモデルは使いません。取得するものもありません。強さは3段階から選べます。

写真の傾き(台形)は直しません。四隅の検出は白い紙を白い机に置くと外れ、 精度が読めないためです。影とムラの除去だけに絞っています。 カラーの原稿でも使えます(白黒にはしません)。

影を明るくする

人物写真で、帽子や髪の影が顔にかかってしまったときに使います。 影の部分をブラシで塗ると、周りの明るさから「本来この辺りはどれくらいの明るさか」を 見積もり、足りない分だけ明るくします。

塗りつぶして隠すのではなく、明るさの倍率を掛けるだけなので、 肌の質感や模様はそのまま残ります。 塗っていない所は1画素も変わりません。こちらも取得するものはありません。

影の部分だけを塗ってください。広く塗りすぎると明るさの基準がずれて効きが弱くなります (塗りすぎても暗くはなりません)。 また、真っ黒に潰れてしまった影は戻りません。元の情報が残っていないためです。

AI で超解像度処理

小さい画像を 2倍・4倍に引き伸ばします。ふつうの拡大と違い、 輪郭をくっきり保ったまま大きくできます。長辺や幅を指定した大きさにもできます (AI で 2倍か 4倍にしたあと、Lanczos で指定の大きさへ合わせます)。

大きさはそのままで高画質化する

仕上がりに「大きさはそのまま(高画質化)」を選ぶと、画素数を変えずに画質だけを整えます。 中ではいったん AI に 2倍で描かせてから元の大きさへ戻し、最後に細部を立てています。 ピントの甘い写真や、一度大きく引き伸ばされた画像によく効きます。

細部を立てる強さは4段階です。圧縮の跡(モスキートノイズ)が目立つ画像では「しない」を選び、 ノイズ除去だけを掛けるほうがきれいになります。跡まで一緒に立ててしまうためです。

取得するもの

AI を選んだときだけ、初回に拡大用のデータを取得します(およそ 24MB。画面に大きさを表示します)。 2回目以降はブラウザに残るため、待ち時間はありません。

取得するのはこちらから配る計算用のプログラムと重みだけで、画像は送りません。 絵の種類(写真/イラスト)とノイズ除去の設定で使う重みが変わり、選んだものだけを取りに行きます。 外部の CDN には接続しません。

AI の処理には WebGPU に対応した環境が必要です(新しい Chrome や Edge)。 使えない環境では、その場で通常の拡大に切り替えられます。 大きな画像は横の帯に分けて処理するので、写真の大きさで断ることはありません。

送っていないことの確かめ方

位置情報を扱うツールだからこそ、その画像自体がどこへも送られていないことが大事です。 開発者ツールで、通信をそのまま見ることができます。

  1. 開発者ツールを開く Windows / Linux は F12 か Ctrl+Shift+I、 Mac は ⌘+Option+I。
  2. 「ネットワーク」タブを選ぶ
  3. 記録を消す丸に斜線のボタン(Clear)を押します。
  4. その画面を見たまま、画像を読み込んで書き出す

見えるはずのもの

  • この画面自身のファイル
    HTML・JavaScript・CSS。最初の一度だけです
  • blob: で始まる行
    お使いの端末の中だけのもので、通信ではありません
  • 処理を始めたときに増える小さなファイル
    計算を担当する部品(…worker-…js)。当サイトから1度だけ取ります
  • AI を選んだときだけ増えるもの
    計算用のプログラム(ort-…wasm)と重み(/image/models/…onnx)。 いずれも当サイトから配っています
  • 広告の配信元(Google)への通信
    広告を表示するためのものです(googlesyndication.com など)。画像のデータは含まれません

見えないはずのもの

  • 画像の送信(POST)
  • 位置情報やファイル名を送る通信
  • 読み込みや書き出しのたびに増える通信
  • 手箱以外の場所への、画像に関わる通信

増えるのは「こちらから何かを取りに行く」ものだけで、送るものはありません。 大きさと向きだけを見てください ―― どれも 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 など△××(別の形式で書き出します)

「メタデータだけ外す」が使えない形式は、作り直しになります。その場合も情報は残りません。 読み込みはブラウザの機能を使うため、対応はお使いのブラウザによって変わります。

できないこと・気をつけていただきたいこと

作り直すと画質は落ちます
JPEG や WebP は作り直すたびに劣化します。画質を保ちたいなら 「メタデータだけ外す」を選んでください。こちらは劣化しません。
「作り直す」では元より大きくしません
長辺や幅を元より大きく指定しても、そのままの大きさで書き出します。ふつうの拡大では情報が増えないためです。 大きくしたい場合はAI で超解像度処理をお使いください。
AI には対応した環境が要ります
AI で超解像度処理には WebGPU が必要です(新しい Chrome や Edge)。 Linux や一部のスマートフォンでは使えないことがあります。 使えない場合はその場で通常の拡大に切り替えられます。初回のみ約 24MB を取得します。
AI は「元に無いもの」は作れません
小さく潰れた文字や、強く圧縮されて消えた模様は戻りません。 4倍は2倍よりも作り物めいた絵になりやすく、写真では2倍のほうが自然なことがあります。
書類モードは傾きを直しません
影と照明のムラだけを消します。斜めから撮った書類を正面から見たように直す機能はありません。
真っ黒に潰れた影は戻りません
「影を明るくする」は残っている階調を持ち上げるものです。情報が残っていない部分は、 明るくしても色が出ません。
透明な部分は白くなります(JPEG のとき)
JPEG は透明を扱えないため、白で埋めます。透明を保ちたい場合は PNG か WebP を選んでください。
枚数が多いと重くなります
画像はすべてブラウザのメモリに載ります。何十枚も大きな写真を入れると重くなることがあります。
写真そのものに写り込んだ情報は消せません
表札や書類が写っている場合、それは絵の一部です。メタデータの削除では消えません。 必要なら、その部分を塗りつぶしてからお使いください。
作業内容は保存されません
何も預からない代わりに、画面を閉じると消えます。その都度書き出してください。

使っているソフトウェア

画面の組み立てに Preact(MIT)を使っています。 「AI で超解像度処理」を選んだときだけ、推論に ONNX Runtime Web(MIT)を、 拡大の重みに waifu2x / nunif(MIT・Copyright (C) 2019-2023 nagadomi)を使います。 重みは当サイトから配信しており、外部のCDNには取りに行きません。 画像の読み込みと書き出しはブラウザの Canvas API、拡大縮小(Lanczos)、書類モード、 影を明るくする、等倍の高画質化での細部の強調は、いずれもこのサイトのコードで直接行っています。 Exif と PNG のメタデータの読み取り・削除も同じです。 画像を扱う外部ライブラリは使っていません。

ライセンス表示を見る