本文へスキップ

SVG スプライトシート

JSON マップを使用して SVG スプライトシートを生成する

SVG アイコンをカスタム グリッド上に配置し、JSON フレーム マップを含む 1 つの PNG、WebP、または SVG スプライトシートをエクスポートします。列、セルのサイズ、パディング、間隔、配置、スケール、並べ替え順序を制御します。

ここにファイルをドロップ
グリッド

0 は自動です。どちらも 0 ならアイコンは正方形のグリッドに並び、片方を指定すればもう片方はファイル数から決まります。

余白はセルの内側の空きで、間隔はセルとセルのすき間です。JSON マップのフレームは余白も含めたセル全体を覆い、間隔にはかかりません。

並び替え
セルの中身
水平方向の配置
垂直方向の配置

余白を除いたセルの中で、収めたあとの絵柄が占める割合です。

各ファイルの名前をセルの下に書き込みます。ラベルの行はシートの高さに加算され、フレームの外に置かれます。

出力
出力形式

PNG はどこでも使えます。WebP はブラウザがエンコードできる環境ならより小さくなります。SVG は各アイコンをベクターのまま保つので、拡大してもぼやけません。

背景

プレビュー

プレビューはありません。ファイルを追加して選択すると結果が表示されます。

ファイルがありません。上にドロップするか、「ファイルを選択」を押してください。

SVG スプライトシートとは

スプライトシートは、たくさんの小さな画像をグリッドに収めた 1 枚の画像と、それぞれがどこにあるかを示すマップの組み合わせです。ここでの元データは SVG ファイルで、1 つずつ専用のセルに描画され、できあがったシートは PNG、WebP、または 1 枚の SVG キャンバスとして書き出されます。

これは、SVG シンボル スプライトとは異なります。シンボル スプライトは、<use> の ID によってページ参照されるアイコンごとに <symbol> を持つ 1 つの SVG ファイルであるため、各アイコンはベクター マークアップのままで、CSS で色付けできます。スプライトシートは視覚的なキャンバスです。スプライトシートを消費するものはすべて、座標によってフレームを切り出します。 HTML アイコンのシンボル スプライト、キャンバスのスプライトシート、WebGL、または CSS 背景スプライトを選択します。

スプライトシートを使うのはどんなとき

スプライトシートは、たくさんの小さな画像を 1 つのファイルにまとめます。ゲームやアプリはリクエスト 1 回で済み、すべてのフレームを 1 枚のテクスチャに収めておけます。canvas や WebGL のレンダラーは矩形を指定して描画し、CSS は background-position で位置を決め、その座標は JSON マップが教えてくれるので、手で測る必要はどこにもありません。読み込む側がピクセルで動いているなら、選ぶのはこちらです。HTML の中で自在に拡大縮小し、色を継承するアイコンが欲しい場合は、代わりに SVG シンボルスプライトを作ってください。

SVG ファイルからスプライトシートを作成する方法

  1. 1

    SVG ファイルをドロップするか「ファイルを選択」を押してキューに追加します。一度に最大 40 件までです。

  2. 2

    グリッド(列数、行数、セルサイズ、余白、間隔)を決め、続けて配置、拡大率、並び替え、出力形式を設定します。変更するたびにシートが描き直されます。

  3. 3

    「すべて保存」を押すと、シートと JSON のフレームマップを収めた ZIP を 1 つダウンロードできます。

プライバシー:ファイルはブラウザから出ません

変換は、JavaScript および WebAssembly を使用してブラウザーでローカルに実行されます。ファイルのアップロードやサーバー側の変換がないため、追加したファイルはデバイス上に残ります。

ローカル処理は、機密ロゴ、内部文書、未公開のクライアント アートワークを保護するのに役立ちます。ページと変換コードは使用中にキャッシュされるため、すでに開いているツールはネットワーク接続がなくても引き続き動作できます。

よくある質問

スプライトシートと SVG シンボルスプライト、どちらを使うべきですか?

アイコンを HTML に置くならシンボルスプライトです。ベクターのままで、CSS の color プロパティを継承し、各アイコンは id を指定して <use> で参照します。canvas や WebGL のゲーム、CSS の背景スプライトのように、座標をもとにピクセルを描画するものにはスプライトシートを使ってください。スプライトシートの JSON マップには、すべてのフレームの x、y、width、height が入っています。

JSON マップには何が入っていますか?

アイコンごとに 1 件、拡張子を除いたファイル名をキーにしたエントリが入ります。たとえば {"home":{"x":0,"y":0,"width":64,"height":64}} のようになります。矩形は余白も含めたセル全体を覆うので、その矩形を描画すれば、アイコンは置かれたとおりの位置に再現されます。同じ名前が重なった場合は -2、-3 が付き、キーは必ず一意に保たれます。

シートはどれくらい大きくできますか?

canvas の上限は 1 辺あたり 16,384 px、合計で 64 メガピクセルです。256 px のセルにアイコン 40 個なら余裕で収まります。上限を超えた場合は、白紙の画像を書き出す代わりに、ツールがそのサイズを知らせます。WebP はブラウザにも左右されます。WebP をエンコードできない環境では、拡張子だけ違う PNG ではなくエラーが返ります。