=== FIELD Image Re-render ===
Contributors: field
Requires at least: 5.3
Requires PHP: 7.3
Stable tag: 1.4.0
License: GPLv2 or later

メディア画像を「スクショ」（ピクセルだけ描き直し）してメタデータを取り除き、さらに圧縮して同名で差し替える管理者向けプラグイン。処理の前後で画像・容量・画質・メタデータがどう変わったかを管理画面で比較できます。元画像は退避され、いつでも復元できます。

== 必要なもの ==
PHP 7.3 以上と GD 拡張（WebP を扱う場合は GD の WebP 対応）。exif 拡張があれば写真の回転情報を画像に反映します。
外部サービスは不要です。
「ベクター化して作り直す」を使う場合だけ、サーバーに VTracer（https://github.com/visioncortex/vtracer 0.6 系のコマンド版）と PHP の exec() が必要です。
既定では /usr/local/bin/vtracer を探します。別の場所なら wp-config.php に define('FIELD_IRR_VTRACER', '/path/to/vtracer'); と書きます。

== インストール ==
1. 管理画面の「プラグイン > 新規追加 > プラグインのアップロード」からこの ZIP を追加し、有効化します。
2. 元画像の退避先を用意します。既定はドキュメントルート（WordPress のフォルダ）の1つ上の `field_ir_originals` です。
   PHP（Web サーバーのユーザー）が書き込めるようにしてください。Web から見えない場所である必要があります。
   別の場所にする場合は wp-config.php に次を書きます。
   define('FIELD_IR_BACKUP_DIR', '/path/to/field_ir_originals');
3. 「メディア > 画像のスクショ圧縮」を開き、圧縮設定を確認してから画像を選んで処理します。
   メディア一覧（リスト表示）の各行からも1枚ずつ処理・比較・復元できます。

== 処理内容 ==
① スクショ
* 画像のピクセルだけを新しいキャンバスに写し取ります。WordPress が作った縮小版も一緒に処理します。
* EXIF（撮影日時・機種・GPS）、XMP / IPTC、PNG のテキスト情報（生成AIのプロンプトなど）、C2PA、色プロファイル（ICC）、JPEG のコメントは残りません。
* 写真の回転情報は画像そのものに反映するので、表示の向きは変わりません。
* 「長辺の上限」を設定すると、それより大きい画像はここで縮小します（既定は縮小しない）。

（任意）ベクター化して作り直す（VTracer）
* チェックを入れると、スクショした画像を VTracer で色の領域と輪郭に分け、塗りつぶし・曲線の図形（SVG）に変換し、
  その図形をプラグイン内で同じ寸法に描き直して（2〜3倍で塗ってから縮小して輪郭をなめらかに）画像にします。
* 仕上がりは「イラスト向け」（VTracer の poster）と「写真向け」（photo）から選べます。
* ロゴ・図版・イラスト向きです。写真はポスター調になり、グラデーションや細かい文字は省かれることがあります。
* ファイル名と形式は変わりません（JPEG は JPEG のまま保存し、記事の画像パスは変わりません）。
* 途中の SVG は退避先に保存し、比較画面から開けます。

（任意）見た目を変える
* チェックを入れると、圧縮の前に「ポスター調」（色の面をまとめて12色に）か「イラスト調」（32色＋輪郭線）に変えます。
* 外部サービス（AI の API など）は使わず、サーバーの GD だけで処理します。透過を含む画像には掛けません。
* 細かい文字が多い画像は、イラスト調だと文字の周りにも線が入ってにぎやかになります。比較画面で確認してください。

（任意）軽いぼかし
* 「軽いぼかし」を「弱」か「中」にすると、スクショの後・圧縮の前に 3×3 のガウスぼかしを 20%（弱）／40%（中）だけ重ねます。
  細かいザラつきが減るので、特に写真の JPEG / WebP が小さくなります。既定は「なし」。透過を含む画像には掛けません。
  比較画面の画質（PSNR）は、ぼかし前のスクショとの差で表示します（ぼかしの影響も含みます）。

② 圧縮
* JPEG / WebP は設定の品質（既定 75）で保存し直します。JPEG はプログレッシブ形式です。
  元より大きくなる場合は 5 刻みで「下限品質」（既定 60）まで下げて試します。
* PNG は可逆圧縮（レベル9）。「自動」（既定）では、256色に減らしても見た目が変わらない画像（PSNR 40dB 以上・1割以上小さくなる）だけ減色します。
  透過を含む PNG は減色しません。可逆で保存し直すと元より大きくなり、メタデータも付いていない PNG は元のまま残します。
* 設定を変えてから処理済みの画像をもう一度処理すると、退避した元画像から新しい設定で作り直します（圧縮を重ねません）。

③ 比較
* 処理後は「前後を比較」画面で次を確認できます。
  - 元画像 → スクショ → 圧縮 → 差し替え後 の流れ（寸法・容量・符号化方式・推定品質）
  - 全ファイル（原寸・縮小版）の容量の変化と削減率、圧縮方式、画質（PSNR）
  - 取り除いたメタデータの中身（GPS座標・機種・作成ツール・PNGのテキストなど）
  - 見た目の比較：スライダー／並べて表示／差分（変化したピクセルを強調表示）、等倍表示
* 「前」の画像は退避した元画像を管理者にだけ配信します（Web には公開されません）。

== 設定 ==
「メディア > 画像のスクショ圧縮」の圧縮設定で変更できます。コードで固定する場合は次のようにします。
add_filter('field_irr_settings', function ($s) { $s['jpeg_quality'] = 80; return $s; });
（キー: jpeg_quality, webp_quality, min_quality, png_mode = auto|lossless|palette, max_side, blur = 0|1|2, vectorize = 0|1, vtracer_preset = poster|photo, style = ''|poster|illust）

== 復元 ==
「処理済み」で絞り込んで「選択画像を復元」を押すと、退避した元画像に戻ります（バイト単位で元どおり）。
退避先のフォルダを消すと復元・比較ができなくなるので注意してください。

== 対象外・注意 ==
* JPEG / PNG / WebP のみ。1枚 15MB・各辺 4096px・1600万画素まで。アニメーション WebP、GIF、SVG は扱えません。
* 外部ストレージ（S3 など）に移したメディアは処理できません。
* JPEG / WebP は非可逆圧縮なので画質がわずかに変わります。比較画面の画質（PSNR）と差分表示で確認してください。
* 広色域（Display P3 など）の写真は、色プロファイルが消える分、色が少し変わることがあります。
* 取り除くのはファイルに付属するメタデータです。SynthID などの画素に埋め込まれた AI 電子透かしは取り除きません。
* CDN やブラウザのキャッシュが残っていると、差し替え後もしばらく古い画像が表示されることがあります。
* 本番に入れる前に、テスト環境か複製した画像で差し替え・比較・復元を確認してください。

== 変更履歴 ==
= 1.4.0 =
* 「見た目を変える」（ポスター調／イラスト調）を追加
= 1.3.0 =
* 「ベクター化して作り直す」（VTracer → SVG → 描き直し）を追加。比較画面から中間の SVG を開ける
= 1.2.0 =
* 「軽いぼかし」（なし／弱／中）を設定に追加
= 1.1.0 =
* スクショの後に圧縮する2段階の処理に変更（品質・下限品質・PNG減色・長辺の上限を設定可能）
* 処理前後の比較画面を追加（容量・画質・メタデータ・スライダー／差分表示）
* GD が JPEG に書き込むコメントも取り除くように
= 1.0.0 =
* 初版（ピクセルの描き直しによるメタデータ除去・元画像の退避と復元）
