スプライトシート生成ツール

選択したファイルを復元中...

画像をまとめてドロップすると、生成ツールが均等なグリッドに並べ、ブラウザ内で1枚のスプライトシートPNGを描画し、スプライトごとに background-position のオフセットを付けたCSSを出力します。すべてキャンバス上でローカルに実行されるため、サーバーには何もアップロードされません。アイコンセット、レトロゲームのフレーム、多数の個別画像より1枚のファイルが欲しいUI状態に便利です。列数、タイルサイズ、セル間の余白、背景(透明・白・黒)を自分で設定できます。

スプライトシートの作られ方

  1. 1

    画像をドロップ

    PNG・JPG・WebPファイルを追加します。上下ボタンで並べ替えたり任意のフレームを削除したりでき、シートは即座に再構築されます。

  2. 2

    グリッドを設定

    列数を選ぶと、追加した画像の枚数から行数が決まります。各画像はアスペクト比を保ったまま正方形のタイルに収まるよう拡大縮小され、中央に配置されます。

  3. 3

    タイルサイズと余白を調整

    タイルサイズをピクセルで選び、拡大縮小時に隣り合うスプライトがにじまないようセル間に余白を追加します。

  4. 4

    PNGをダウンロードしCSSをコピー

    スプライトシートを1枚のPNGとして保存し、生成されたCSSクラスをコピーします。画像ごとに幅・高さ・background-positionを持つ `.spr-名前` ルールが1つずつ作られます。

レイアウトの仕組み

生成ツールは予測しやすい単一のレイアウト、均等なグリッドを使います。列数を指定すると、行数は 切り上げ(画像数 / 列数) になります。各セルは同じ正方形サイズ(選んだタイルサイズ)なので、各画像はアスペクト比を保ってセルに収まるよう拡大縮小され、中央に配置されます。サイズの異なる画像もすべて同じ大きさのセルに収まり、これはbackground-positionを使うCSSスプライトがまさに期待する形です。

設定 範囲 効果
列数 1〜16 1行あたりのスプライト数。行数は自動計算
タイルサイズ 32〜512 px 各画像を収める正方形のセル
余白 0〜64 px 拡大縮小時のにじみを防ぐ、セル間の透明なすき間
背景 透明 / 白 / 黒 出力PNGでスプライトの背後を埋める色

出力されるCSSの形

各画像はファイル名を冠したクラス(.spr-<名前>)になり、タイルサイズに合わせて自分のセルへオフセットされます。列4、タイルサイズ128 px、余白なしの場合、シートは次のようになります。

.spr-idle  { width: 128px; height: 128px; background: url(spritesheet.png) -0px -0px; }
.spr-walk  { width: 128px; height: 128px; background: url(spritesheet.png) -128px -0px; }
.spr-run   { width: 128px; height: 128px; background: url(spritesheet.png) -256px -0px; }
.spr-jump  { width: 128px; height: 128px; background: url(spritesheet.png) -384px -0px; }
.spr-fall  { width: 128px; height: 128px; background: url(spritesheet.png) -0px -128px; }

オフセットは2方向に動きます。スプライトは各行を左から右へ埋め、次の行へ折り返します。PNGはCSSの隣に spritesheet.png として保存してください(またはパスに合わせて url(...) を編集してください)。

余白とにじみ

端どうしを隙間なく詰めたスプライトは、ブラウザがシートを拡大縮小するとき(非整数のピクセル比、CSS変換)に互いへにじむことがあります。隣のピクセルが漏れ込まないよう、セル間に2〜4ピクセルの余白を加えてください。

高精細(Retina)ディスプレイ

自動の2xエクスポートはありませんが、より鮮明なシートは簡単に作れます。各スプライトがより多くのピクセルを持つよう大きめのタイルサイズを選び(例: 128 pxの代わりに256 px)、CSS上では半分のサイズで表示します。これで別の工程なしに高精細ディスプレイでも鮮明なスプライトが得られます。

スプライトシートと代替手段

  • スプライトシート: CSSでの古典的なアイコンセット、HTML5ゲームのフレーム、多数の小さな画像を1ファイルにまとめると有利なページ。
  • SVGスプライト(symbol): 現代的なUIアイコンに向き、劣化なく拡大縮小でき、CSSの fill を受け付け、background-position に悩まずに済みます。
  • アイコンフォント: 制限はありますが、ごく小さな単色アイコンには今も使われます。
  • HTTP/2やHTTP/3での個別ファイル: 多重化により、リクエスト数の重要性は以前ほどではなくなりました。

よくある質問

画像はブラウザー内に残ります。複数ステップの流れでは、選択した画像ファイルとレイアウトがこのブラウザーのタブ内に最大30分間だけ一時保存されます。サーバーへの送信やURLへの追加は行われません。

はい。ただしインラインSVGやSVGの <symbol> スプライトのほうがコンポーネント指向のフレームワークには合うことが多いです。CSSスプライトシートは、静的ページで多数の画像を同時に表示するときに真価を発揮します。

各フレームが1行に収まるよう列数をフレーム数に合わせ、CSSの animation-timing-function: steps(N) とセルごとに飛ぶ background-position で制御します。短いループアニメーション(ローダー、待機状態)に向いています。

グリッドの各セルは同じ正方形サイズ(選んだタイルサイズ)なので、各画像は自分のセルに収まるよう調整され中央に配置されます。スプライトがすでに同じ正方形なら、タイルサイズをそれに合わせれば変更なく通ります。

関連ツール