Pixel Snapperの代替 · ドット整理ツールを実測比較
偽物のドット絵を本物のグリッドに戻すという無料ツールはいくつもあります。Sprite FusionのPixel Snapper、unfake.js、perfectPixelをそれぞれの初期設定で、元の1倍画像が分かっているCC0スプライト69件に同じように実行し、同じ方法で採点しました。Nerulioが勝った所と負けた所を両方載せます。
Sprite FusionのPixel Snapper、unfake.js、perfectPixelは、どれも拡大・サイズ変更・生成された「偽物」のドット絵をグリッド上の1倍画像にしますが、測り方も失敗の仕方も違います。Pixel Snapper(Rust、コマンドラインとWebページ)は常に合わせて減色し、既定は16色です。unfake.js(JavaScriptのライブラリとブラウザツール)は整数倍を扱い、ベクター化もできます。perfectPixel(Python)はFFTでグリッドを探し、セルが4px未満だとあきらめます。Nerulioの整理パネルはブラウザのエディタ内で動き、まずグリッドと確かさを示し、不確かなら合わせません。

- .aseprite検証済み· Aseprite 1.3.18
- Palette files測定確認· read back
- Engine bundles検証済み· Godot 4.7.2 · Unity 6000.5
- Frame PNG · .nerulio通常ファイル
それぞれのツールが実際にすること
Pixel Snapper(MIT、Hugo Duprez作)はRustで書かれています。コマンドラインはspritefusion-pixel-snapper input.png output.png 16で、ピクセルの大きさを検出して合わせ、固定のパレットに減色します。既定は16色で、--paletteで自分のHEX色を渡せ、--pixel-sizeで検出結果を上書きできます。同じエンジンがspritefusion.comでも動き、READMEはタイルマップやゲーム素材向けの生成画像を対象にしています。
unfake.js(MIT)はブラウザツール付きのJavaScriptライブラリです。区間ベースまたはエッジを考慮した倍率検出、優勢色・中央値・内容適応の縮小、減色、モルフォロジーによる整理に加え、画像をSVGにするベクター化機能があります。perfectPixel(MIT、pip install perfect-pixel)はFFTでグリッドを探し、Sobelの縁で調整してから中心・中央値・多数決でサンプリングします。ComfyUIのノードとWebデモがあります。
Nerulioは整数のブロックグリッドを正確に証明し、小数倍やなめらかなサイズ変更は格子で測り(バイリニアは最小二乗の逆変換)、不揃いな疑似ピクセルは縁をたどり、結果に確実・おそらく・不確かを付けます。適用するのは確実とおそらくだけです。結果はドット絵エディタ内の新しいスプライトなので、どのツールでも間違えるピクセルを手で直せます。
- 減色(量子化)
- 絵を決まった数の色(パレット)に減らすこと。
- グリッド検出
- 偽のピクセルのセルの大きさ(とオフセット)を見つけること。
- 確かさ
- ツールがどれだけ確かかを示すかどうか。Nerulioは示し、ほかのツールはどちらの場合も結果を返します。
できること
- ケース:CC0のスプライト・タイル13点(Kenney、Eris、GrafxKid、DezrasDragonsなど)を決まった方法で劣化させたもの。ニアレスト×2〜×8、小数倍ニアレスト、バイリニア・バイキュービック・Lanczos拡大、JPEG、ぼかし、ドットの大きさが不揃いな模擬生成画像。
- 採点:最大2pxずらして最も合う位置での完全一致ピクセル、Oklab ΔE 0.02以内のピクセル、結果のサイズが正確か1px以内か。失敗した実行は0として数えるので、難しいケースを飛ばして良く見せることはできません。
- 画像生成で作られた実際の画像7枚には正解がありません。Nerulioは7枚とも「不確か」と判定してサイズを変えず、弱い候補を表示しました。ほかのツールは必ず推定を返し、同じ3枚でunfake.jsはドットの大きさ3、Pixel SnapperとperfectPixelは約6を選びました。
- Nerulioは変更の前に測ったグリッドと確かさを表示し、結果はエディタの新しいスプライトになるので、はみ出しピクセル・パレット・縁取りを手で直せます。
- すべてを再実行できるスクリプトとデータが、ツールのバージョンと設定つきでリポジトリ(docs/pixel-bench)にあります。
同じ69件、同じ採点
全体の結果で、失敗した実行は不正解として数えます。docs/STUDIO-PIXEL.md §5、docs/pixel-bench/H2H.md §3。
| ツール | サイズ一致 | サイズ±1px | 完全一致ピクセル | ΔE 0.02以内 | 失敗 |
|---|---|---|---|---|---|
| Nerulio、初期設定 | 81 % | 90 % | 63.2 % | 75.4 % | 0 |
| Nerulio、背景を残す | 81 % | 90 % | 74.0 % | 91.1 % | 0 |
| unfake.js(ライブラリ初期設定) | 25 % | 41 % | 44.6 % | 64.6 % | 0 |
| unfake.js(ブラウザツール、グリッド自動) | 26 % | 42 % | 40.7 % | 64.8 % | 0 |
| perfectPixel | 30 % | 43 % | 33.9 % | 55.9 % | 15 |
| Sprite Fusion Pixel Snapper | 6 % | 28 % | 33.4 % | 54.7 % | 0 |
この数値の出典: docs/STUDIO-PIXEL.md §5, docs/pixel-bench/H2H.md
Pixel Snapper, unfake.js and perfectPixelのほうが向いている場合
- スクリプトから呼べるライブラリであること。Pixel Snapperはコマンドライン付きのRust、unfake.jsはJavaScript、perfectPixelはPython。Nerulioの整理はStudioの中だけで動き、コマンドラインはありません。
- JPEG入力を初期設定で処理すると、unfake.jsのほうがΔE 0.02以内のピクセルを多く残しました(74.6 %、Nerulioの初期設定は48.4 %)。Nerulioは背景を残して84.0 %になります。
- 生成画像にも必ず答えを返すこと。Nerulioは不確かな画像を、ドットの大きさを入力するまでそのままにします。
- perfectPixelは模擬生成画像のサイズを2倍の頻度で正確に当て(40 %対20 %)、きれいなニアレスト拡大でグリッドを検出できれば結果は正確です。
使い方
- 拡大された画像や生成画像をこのページにドロップすると、ピクセル作業画面に開きます。
- 整理パネルで「測定」を押して判定を読みます。正確なブロックのグリッド、小数倍やなめらかな拡大、または推奨サイズつきの「不確か」。
- 不確かな画像は、描かれたグリッドを拡大して見えるドットの大きさを入力します。色が汚れていれば色数の上限かパレットへの減色をオンに。
- プレビューのあと新しいスプライトとして適用し、書き出す前に鉛筆で数ピクセルを整えます。
どれをいつ使うか
| 方法 | こんなときに向いています |
|---|---|
| Pixel Snapper | すべての画像に1コマンドで決まった色数の結果がほしいとき、またはすでにspritefusion.comを使っているとき。私たちの実行では、セルが大きいとき(×5と×7のタイルはサイズ1px以内でピクセルすべて一致)と模擬生成画像(80 %でサイズ1px以内)で最も良く、整数倍の拡大では細かく分けすぎて正確なサイズを一度も当てませんでした。 |
| unfake.js | JavaScriptのパイプライン内のきれいな整数倍の拡大。グリッドをautoにすると、×2〜×8のニアレストで正確なサイズの85 %を当てました。画像をSVGにベクター化する機能もあり、Nerulioにはありません。 |
| perfectPixel | セルが4px以上のPython・ComfyUIでの一括処理。きれいな拡大でグリッドを検出できれば結果は正確で(完全一致10件)、模擬生成画像のサイズを40 %で正確に当てました。既定のmin_sizeである4pxより小さいと何も返しません(失敗15件中11件)。 |
| Nerulioの整理パネル | 小数倍やなめらかなサイズ変更(該当ケースで正確なサイズ100 %・93 %)、グリッドとパレットを1つにそろえる必要のあるアニメーション、何かを変える前にグリッドを見たいとき。 |
| 手で描き直す | どのツールも一貫したグリッドを見つけられない生成コンセプト画。模擬生成画像で完全一致ピクセルが70.3 %を超えたツールはありません。 |
エンジン別の書き出しと検証方法
「検証済み」は、実際のCC0アセットから書き出したファイルを本物のエンジン・ツールで読み込み、元データと比較したという意味です。読み込んでいない形式はそのように表示します。
| 書き出し先 | ファイル | 検証 |
|---|---|---|
| .aseprite | layers · blend · opacity · locked · indexed palette · frames · tags | 検証済み Aseprite 1.3.18実際のAsepriteコマンドラインで、インデックスモード・レイヤー2枚・不透明度160の乗算・編集不可のロックレイヤーのまま開き直し、フレームのピクセルも一致しました。 |
| Palette files | .gpl · .pal · .hex · .ase · .act · .json | 測定確認 read back各形式を書き出して読み戻し、一致を確認。Asepriteが書いた.gpl・.pal・.hex・.actと実際のAdobe .ase(16色)も読み込めました。 |
| Engine bundles | Godot 4 · Unity 6 · Phaser 3/4 · PixiJS 8 … through Pack & Export | 検証済み Godot 4.7.2 · Unity 6000.5描いたスプライトはパック&書き出しでまとめます。そのエンジン用ファイルは実在のCC0アセットで各エンジンに読み込んで確認済み(49回中47回合格。失敗2回はPhaser 3プリセットで避けられるPhaser 3.90のバグ)。 |
| Frame PNG · .nerulio | PNG-8 with the palette when an indexed frame fits it · project file | 通常ファイルどのツールでも使える通常ファイルで、エンジンでの検証は主張しません。 |
検証の根拠
整理のベンチマーク(元の1倍画像が分かっているCC0ケース69件):サイズを正確に当てたのは81 %(±1px:90 %)、背景を残すとピクセルの74.0 %が完全一致。最も良い競合ツールはサイズ30 %(perfectPixel)、完全一致ピクセル44.6 %(unfake.js)。Asepriteで作った×4ニアレスト拡大は100 %、×3.78バイリニアは99.7 %一致で戻り、どちらもサイズは自動で判定。1pxのアウトラインとドロップシャドウはAsepriteの結果とピクセル単位で一致(1846px・705px)。ここで書いた.asepriteはAseprite 1.3.18でインデックスモード・レイヤー・合成モード・ロックのまま開きます。
制限
- コマンドラインもライブラリもありません。Nerulioの整理はブラウザのStudio内でしか動きません。
- SVGへのベクター化機能はありません。
- 実際の生成画像はサイズを入力するまでそのままにします。テストでは7枚すべてでした。
- 初期設定は単色の縁の背景を消すため、背景が絵の一部の場合は完全一致ピクセルが減ります(背景を残すと74.0 %、初期設定63.2 %)。
- ピクセル作業画面にないもの(Asepriteにはある):レイヤーグループ、リンクセル、タイルマップレイヤー、参照レイヤー、RotSpriteと選択範囲の自由回転・拡縮(反転と90°のみ)、グラデーション・スプレー・輪郭・テキストツール、カスタムブラシ(四角・丸の1〜16px)、タイル状の連続描画、LuaスクリプトとCLI。
- 対称軸は数値入力で、キャンバス上でドラッグできません。タッチでは右ボタンがないため、背景色は入れ替えボタンかXで使います。
- 整理:JPEGは近い色で戻りますが(背景を残すと84 %がΔE 0.02以内)、完全一致はまれ(12 %)。模擬的な生成画像でサイズが完全一致したのは20 %(±1px:80 %)、実際の生成画像7枚は1枚も自動では合わせません。パネルが示すピクセルサイズを入力してください。
- インデックス変換はAsepriteのRGB距離ではなくOklabで最も近い色を選びます。テスト用スプライトでは68 %のピクセルが別の(見た目により近い)色になりました。Lospec検索が唯一の通信で、事前に確認します。
バージョンと出典
競合ツールは2026-09-23/24にそれぞれの初期設定で実行:Pixel Snapper = spritefusion.comから取得したWebAssemblyビルド(リポジトリはae20461、1.0.0)、16色 — 実際のページとのバイト一致は確認できていません。unfake.jsはb2bee10(ライブラリ初期設定、ブラウザツール初期設定、グリッドauto)。perfectPixel 0.1.4(72096de)はOpenCVで実行し、アルファは捨てられます。Nerulioは2026-09-25に実行(docs/pixel-bench/H2H.md、docs/STUDIO-PIXEL.md §5)。ツールの説明は各プロジェクトのREADMEに従っています。
参照した公式ドキュメント
よくある質問
画像生成で作った絵にはどのツールが一番いいですか?
まだ頼れるツールはありません。模擬生成画像でサイズを正確に当てた回数が最も多いのはperfectPixelで(40 %、Nerulioは20 %)、Nerulio・perfectPixel・Pixel Snapperは80 %のケースで1px以内でした。差が大きいのは完全一致ピクセルで、背景を残したNerulioは70.3 %、ほかのツールはすべて7 %未満でした。
Nerulioが一部の画像を合わせないのはなぜ?
グリッドの根拠が弱いと推測せず「不確か」と伝えます。それでも最良の候補とそのグリッドを表示するので、そのサイズを入力して適用できます。競合ツールはどれだけ確かかを示さずに推定を出力します。
競合ツールは公平に実行しましたか?
利用者が使うのと同じように、それぞれの初期設定で実行しました。Pixel Snapperはサイト自身のWebAssemblyビルドで16色、unfake.jsはライブラリとブラウザツール、perfectPixelはPythonパッケージ。設定とバージョンはdocs/pixel-bench/H2H.mdにあります。
無料ですか?アカウントは必要ですか?
このページの機能はすべて無料で、アカウントなしで使えます。透かしや制限された書き出しはありません。
スプライトはアップロードされますか?
いいえ。Studioはこのブラウザのタブ内でデコード・パック・書き出しを行います。プロジェクトはブラウザ(IndexedDB)に自動保存され、.nerulioファイルとして保存できます。
Asepriteやエンジンのプラグインは必要ですか?
いいえ。.asepriteファイルはブラウザで読み書きします。エンジン別のバンドルには必要なものが入っています(Godotはインポート設定とシーン、UnityとGodotのタイルセットは小さなエディタースクリプト)。