スーパー画像編集画蔵君 — 第三者ソフトウェアの表示

2026年9月23日 現在 — それぞれのライセンスに従って再配布しています

スーパー画像編集画蔵君 — Copyright (c) 2026 UR_Ikko — 本体は MIT ライセンスです。

PDF と AI ファイルを読み込むために、Mozilla の PDF.js を同梱しています。 PDF.js は Apache License 2.0 で提供されており、同ライセンスは配布物に著作権表示と ライセンス本文を含めることを求めています。この文書はそのための一覧です。

また、開いた画像の来歴(Content Credentials / C2PA)を読んで検証するために、 Content Authenticity Initiative の c2pa-web(MIT)を同梱しています(3 節)。

さらに、パソコンの中だけで動く顔の検出(YuNet・MIT)と人物の切り抜き(MODNet・Apache-2.0)、それを動かす onnxruntime-web(MIT)、AVIF の書き出し(@jsquash/avif・Apache-2.0 = libavif・libaom、BSD-2)を同梱しています(5〜8 節)。

ライセンス本文は vendor/ 以下にそのまま同梱しています。

1. PDF.js

項目内容
名称PDF.js
バージョン6.3.289(legacy ビルド。npm pdfjs-dist@6.3.289 の legacy/build/。2026-09-22 に modern ビルドから替えた。modern は Chrome 147 の機能を使うため。取り寄せた tgz は npm の integrity(sha512)と一致を確認)
著作権者Copyright 2012 Mozilla Foundation
ライセンスApache License 2.0
ライセンス本文vendor/LICENSE-pdfjs.txt
入手元https://github.com/mozilla/pdf.js

該当ファイル

  • vendor/pdf.min.mjs(SHA-256 f401927e692efc7735e0cd528c490d0dd31b7f0972c122b7040df805be45cce4)
  • vendor/pdf.worker.min.mjs(SHA-256 a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e)

legacy ビルドの中には、古いブラウザ向けの補い core-js(https://github.com/zloirock/core-js 、MIT License)の一部が、PDF.js の公式の配布物として入っています(ファイルの中の core-js@… の記述で確認)。本文は vendor/LICENSE-core-js.txt(公式のリポジトリの LICENSE を 2026-09-22 に取り寄せ)。

改変はしていません。配布物にそのまま同梱しています。

2. PDF.js が内部で使う変換モジュール(WebAssembly)

PDF.js は、一部の画像形式と色管理のために別ライセンスのモジュールを同梱しています。 本拡張はそれらも vendor/wasm/ にそのまま同梱しています。

ファイル用途由来と著作権ライセンス本文
jbig2.wasmJBIG2 圧縮画像(白黒スキャンPDF)の展開PDFium — Copyright 2014 The PDFium Authors3条項 BSDvendor/wasm/LICENSE_JBIG2
jbig2_nowasm_fallback.js上記が使えない環境の代替Mozilla PDF.jsApache 2.0vendor/wasm/LICENSE_PDFJS_JBIG2
openjpeg.wasmJPEG 2000 画像の展開OpenJPEG プロジェクト2条項 BSDvendor/wasm/LICENSE_OPENJPEG
openjpeg_nowasm_fallback.js上記が使えない環境の代替(2026-09-23 に追加)Mozilla PDF.jsApache 2.0vendor/wasm/LICENSE_PDFJS_OPENJPEG
qcms_bg.wasmカラープロファイルの変換qcms — Copyright (C) 2009-2024 Mozilla Corporation, Copyright (C) 1998-2007 Marti MariaMITvendor/wasm/LICENSE_QCMS

LICENSE_PDFJS_OPENJPEG と LICENSE_PDFJS_QCMS は、PDF.js 側の組み込みコードに対する Apache 2.0 のライセンス本文です。

openjpeg_nowasm_fallback.js(SHA-256 0f998419819da4491d8302222aa9e2ff2494685641aa2a6c21c3760c29f3e319・451,590 バイト)は 2026-09-23 に追加しました。WebAssembly が止められている環境で、それまで JPEG 2000 の画像だけが 消えていたためです(JBIG2 の代替は最初から同梱していました)。 出どころは npm pdfjs-dist@6.3.289 の tgz の wasm/ で、tgz は npm の integrity (sha512 ZHjSVpDa3D6izMq8/04lvkhkATUmL9px6ChPaXc1k6nU2Mrhlg1/7F0bdUqCwUjw3NsPTfPZsMDUU6ZIcRaeQw==)と 一致することを確認してから取り出しました。改変なし。 同じ tgz の wasm/ の他のファイルは、いま同梱しているものと 1 バイトまで同一であることも確認済みです。

2-2. CMYK の色変換に使う ICC プロファイル — 同梱していません(2026-09-23 に外した)

PDF.js 6.x には、CMYK の色変換に使う ICC プロファイルを外から読む口(iccUrl オプション)が あります。2026-09-23 に一度 vendor/icc/ へ同梱しましたが、同じ日に外しました。

理由: 効いているところを一度も見られなかったためです。 DeviceCMYK の塗り(k 演算子)と DeviceCMYK の画像で試したところ、iccUrl を渡しても 描かれた色は PDF.js 内蔵の近似式(DeviceCmykCS の多項式)と 1 の位まで同じで、 プロファイルも qcms_bg.wasm も読み込まれませんでした(通信の記録で確認)。 効くのは別の経路(CMYK の JPEG など)だと思われますが、手元に実物が無く確かめられません。 確かめられないものを「入っています」と書くほうが不正確なので、同梱をやめました。

必要になったときは、実物の印刷用 PDF で効くことを確かめてから、 vendor/icc/ に .icc とライセンス本文(CC0 1.0)を置き、pdfin.js で iccUrl を渡します。

3. c2pa-web(Adobe / Content Authenticity Initiative)

項目内容
名称c2pa-web(npm @contentauth/c2pa-web 0.14.4。同梱の wasm のハッシュで一致を確認)
著作権者Copyright 2025 Adobe
ライセンスMIT License
ライセンス本文vendor/c2pa-web/LICENSE-c2pa-web.txt
入手元https://github.com/contentauth/c2pa-js / https://www.npmjs.com/package/@contentauth/c2pa-web
用途開いた画像に入っている C2PA の証明を読んで検証するため、書き出す画像に証明を組み立てて埋め込むため

c2pa_bg.wasm は、Rust の c2pa-rs(Adobe。MIT と Apache-2.0 の二重ライセンス。本文は vendor/c2pa-web/LICENSE-c2pa-rs-MIT.txt・vendor/c2pa-web/LICENSE-c2pa-rs-APACHE.txt。https://github.com/contentauth/c2pa-rs )と、 それが使う Rust の部品(x509-parser・rasn・rsa・coset など)を WebAssembly にまとめたものです。 それらの部品はそれぞれのライセンス(主に MIT・Apache-2.0・BSD)で提供されています。 部品ごとの一覧とライセンス全文は vendor/c2pa-web/THIRD_PARTY_LICENSES-c2pa-web.md(c2pa-js のコミット 29549b7=タグ @contentauth/c2pa-web@0.14.4 の Cargo.lock から作成。wasm に入る 230 件、コンパイル時だけの 51 件。GPL・LGPL・MPL などのコピーレフトは無し)。

該当ファイル

  • vendor/c2pa-web/index.js
  • vendor/c2pa-web/c2pa-core.js
  • vendor/c2pa-web/highgain.js
  • vendor/c2pa-web/c2pa_bg.wasm
  • vendor/c2pa-web/c2pa-worker.js(c2pa-core.js の中から取り出したもの)

改変は 1 か所だけです(2026-09-21)。c2pa-core.js の中にある Worker の本体(文字列)を、そのまま vendor/c2pa-web/c2pa-worker.js として取り出し、拡張機能の中ではそのファイルから Worker を作るようにしました (関数 C の先頭に数行。Manifest V3 の拡張機能のページは blob: / data: の Worker を作れないため)。 Worker の中身は 1 バイトも変えていません。検証の処理そのものにも手を入れていません。 写丸君の検証ページ・動丸君と同じ版です。同梱の 5 ファイルのうち index.js・highgain.js・c2pa_bg.wasm・c2pa-worker.js の 4 つは動丸君と 1 バイトまで同一です。 c2pa-core.js だけは動丸君と 6 バイト違いますが、違うのは足した注記の中の製品名だけ (画蔵君は「画蔵君: 拡張機能の中なら…」、動丸君は「動丸君: …」)で、動く部分は 1 バイトも違いません (2026-09-23 に cmp -l で確かめた。違うのは 23768〜23773 バイト目の 6 バイト)。 片方だけ差し替えると、同じファイルの判定が食い違います。

なぜ自分で書かずに借りているか: 証明の検証を自分で書くと、間違えたときに 「偽物を本物と判定する」ことが起きます。本家の実装をそのまま使うのが最も安全です。

4. 信頼する発行元の一覧(vendor/trust/)

ソフトウェアではありませんが、出所を明記します。

ファイル中身出典
c2pa-trust-list.pemC2PA 公式の適合プログラムのトラストリスト(30 枚)https://github.com/c2pa-org/conformance-public
store.cfg署名証明書に許される EKU の一覧https://contentcredentials.org/trust/store.cfg
shamaru-root.pem株式会社カリロエ(写丸君)のルート証明書https://callirrhoe.jp/app/shamaru-kun/ca/root.pem

同梱しているので、検証で外部へ出ていくものはありません。 詳しくは vendor/trust/README.txt。

5. onnxruntime-web(Microsoft)

項目内容
名称onnxruntime-web 1.30.0(WebAssembly 版だけ)
著作権者Copyright (c) Microsoft Corporation
ライセンスMIT License
ライセンス本文vendor/ort/LICENSE-onnxruntime.txt(第三者の表示は vendor/ort/ThirdPartyNotices-onnxruntime.txt)
入手元https://www.npmjs.com/package/onnxruntime-web / https://github.com/microsoft/onnxruntime
用途顔の検出(6 節)と人物の切り抜き(7 節)のモデルを、このパソコンの中だけで動かすため

該当ファイル: vendor/ort/ort.wasm.bundle.min.mjs・vendor/ort/ort-wasm-simd-threaded.mjs・vendor/ort/ort-wasm-simd-threaded.wasm(改変なし)。 スレッドと Worker は使わない設定で動かしています。

6. 顔の検出モデル YuNet(OpenCV Zoo)

項目内容
名称face_detection_yunet_2023mar.onnx
著作権者Copyright (c) 2020 Shiqi Yu
ライセンスMIT License
ライセンス本文vendor/models/LICENSE-yunet.txt
入手元https://github.com/opencv/opencv_zoo/tree/main/models/face_detection_yunet
用途「顔を探して隠す」

改変なし(SHA-256 8f2383e4dd3cfbb4553ea8718107fc0423210dc964f9f4280604804ed2552fa4)。 モデルの学習には WIDER FACE(CC BY-NC-ND)が使われています(モデル自体の配布条件は上の MIT)。

7. 人物の切り抜きモデル MODNet

項目内容
名称MODNet(ONNX・8 ビット量子化版 model_quantized.onnx)
著作権者MODNet の作者(ZHKKKe)
ライセンスApache License 2.0(「コード・モデル・デモは Apache-2.0」と原本の README に明記)
ライセンス本文vendor/models/LICENSE-modnet.txt
入手元原本 https://github.com/ZHKKKe/MODNet / ONNX への変換 https://huggingface.co/Xenova/modnet(Apache-2.0)
用途「人物だけ残す(AI)」

改変なし(SHA-256 92e49898c3e05a6d7a944fc67a8cb87c4aad754ffb6ebd949528c7d1105fee3a)。

8. AVIF の書き出し(@jsquash/avif = libavif + libaom)

項目内容
名称@jsquash/avif 2.1.1 の書き出し部分(avif_enc.js・avif_enc.wasm。スレッドを使わない版)
ライセンス@jsquash/avif: Apache License 2.0(vendor/avif/LICENSE-jsquash.txt)<br>libavif v1.0.1: BSD 2-Clause(vendor/avif/LICENSE-libavif.txt)<br>libaom v3.7.0: BSD 2-Clause(vendor/avif/LICENSE-libaom.txt)+ Alliance for Open Media Patent License 1.0(vendor/avif/PATENTS-libaom.txt)
入手元https://www.npmjs.com/package/@jsquash/avif / https://github.com/AOMediaCodec/libavif / https://aomedia.googlesource.com/aom
用途AVIF の書き出し(Chrome の canvas は AVIF を作れないため)

改変なし。encode.js の代わりに、同じ手順で wasm を読み込む数行を tools-c.js に書いています。

自作している部分(他者のコードを使っていないもの)

以下は外部ライブラリを使わず、すべて自分で書いています。

ファイル内容
pdf.jsPDF の書き出し(FlateDecode / DCTDecode、相互参照表の生成)
formats.jsTIFF の読み書き、BMP の書き出し、GIF の書き出し(減色+LZW)、ZIP の読み書き
doc.jsレイヤー・図形・履歴の管理
recipe.jsレシピの保存と適用
project.js作業ファイル(.gazou)の保存と読み込み
exif.js撮影情報(EXIF)の読み取り
prov.js来歴(C2PA)のまとめと発行元の判定(検証そのものは c2pa-web)
tone.jsトーンカーブ・レベル(単調な 3 次補間の曲線、SVG の feComponentTransfer)
select.js範囲選択(走査線方式の自動選択を含む)
heal.jsマスク・スタンプ・修復のブラシ(修復はラプラス方程式を粗い段から解いて埋める)
detect.js顔の検出(YuNet の出力の読み解き・区切って調べる・重なりの整理)と人物の切り抜き(MODNet)の呼び出し
tools-c.js「顔を探して隠す」「人物だけ残す」の画面と、AVIF の書き出し
tools-d.js履歴パネル・ショートカット一覧・目標サイズの圧縮・画質の比較
tools-b.js範囲選択・ブラシ・トーンカーブの画面
sign.js書き出す画像の証明の署名(COSE_Sign1 の組み立てと、会社のサーバーへの署名の依頼。埋め込みは c2pa-web)
vendor/shamaru/x509.js / vendor/shamaru/c2pa_x5chain.js証明書の読み取りと、署名に使われた証明書の取り出し。写丸君の検証ページのものをそのまま同梱(同じ作者・MIT)
editor.js / editor.html / editor.css画面

自作の部分で通信するのは sign.js だけです。 書き出しで「証明を付ける」を選んだときに、 株式会社カリロエの署名のサーバーへ 32 バイトのハッシュを送って署名をもらいます(画像は送りません)。 c2pa-web は URL を渡すと取りに行く作りですが、画蔵君は中身の文字列だけを渡し、 ファイルの外にある証明(遠隔のマニフェスト)も取りに行かない設定にしています。