精灵图生成器
拖入一批图片,生成器会把它们排布到均匀网格上,并在浏览器中绘制成一张精灵图 PNG,随后输出为每个精灵带一个 background-position 偏移的 CSS。所有处理都在画布(canvas)上本地完成,因此不会向服务器上传任何内容。适合图标集、复古游戏帧,以及你想用单个文件而非许多独立图片的界面状态。你可以控制列数、瓦片尺寸、单元格间距和背景(透明、白色或黑色)。
精灵图是如何生成的
-
1
拖入你的图片
添加 PNG、JPG 或 WebP 文件。用上/下按钮重新排序或删除任意帧;图表会立即重建。
-
2
设置网格
选择列数;行数由你添加的图片数量决定。每张图片会在保持宽高比的前提下缩放以适配一个正方形瓦片,并居中。
-
3
调整瓦片尺寸和间距
以像素为单位选择瓦片尺寸,并在单元格之间加入间距,以避免缩放时相邻精灵相互渗色。
-
4
下载 PNG 并复制 CSS
把精灵图保存为单个 PNG,并复制生成的 CSS 类:每张图片一条带宽度、高度和 background-position 的 `.spr-名称` 规则。
布局如何工作
生成器使用一种可预测的单一布局:均匀网格。你设定列数,行数则为 向上取整(图片数 / 列数)。每个单元格都是相同的正方形尺寸(你选择的瓦片尺寸),因此每张图片会在保持宽高比的前提下缩放以适配其单元格,并居中。尺寸不一的图片最终都落入相同大小的单元格,这正是使用 background-position 的 CSS 精灵所期望的。
| 控制项 | 范围 | 作用 |
|---|---|---|
| 列数 | 1 到 16 | 每行的精灵数;行数自动计算 |
| 瓦片尺寸 | 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; }
偏移在两个方向上移动:精灵从左到右填满每一行,然后换到下一行。把 PNG 保存为与你的 CSS 相邻的 spritesheet.png(或修改 url(...) 以匹配你的路径)。
间距与渗色
边对边紧密排布的精灵在浏览器缩放图表时(非整数像素比、CSS 变换)可能相互渗色。在单元格之间加入 2 到 4 像素的间距,防止相邻像素渗入。
高密度(Retina)屏幕
没有自动的 2x 导出,但你可以用简单的办法得到更清晰的图表:选择更大的瓦片尺寸(例如 256 px 而非 128 px),让每个精灵携带更多像素,然后在 CSS 中以一半尺寸显示。这样无需单独的处理过程,就能在高密度屏幕上获得清晰的精灵。
精灵图与替代方案
- 精灵图: CSS 中的经典图标集、HTML5 游戏帧,以及从把许多小图片合并为一个文件中获益的页面。
- SVG 精灵(symbol): 更适合现代界面图标,无损缩放,接受 CSS
fill,无需摆弄background-position。 - 图标字体: 有限,但仍用于极小的单色图标。
- 搭配 HTTP/2 或 HTTP/3 的独立文件: 多路复用让请求数量不再像过去那样重要。
常见问题
图片保留在浏览器中。在多步骤流程中,此浏览器会将所选图片文件和布局暂时保留在这个标签页内,最长30分钟。不会向服务器发送任何内容,也不会将任何内容添加到URL。
可以,不过内联 SVG 或 SVG <symbol> 精灵通常更契合组件框架。当静态页面同时显示大量图片时,CSS 精灵图最能发挥优势。
把列数设为你的帧数,让每帧位于一行,然后用 CSS animation-timing-function: steps(N) 和逐格跳动的 background-position 来驱动。适合简短的循环动画(加载指示、空闲状态)。
网格的每个单元格都是相同的正方形尺寸(你选择的瓦片尺寸),因此每张图片都被适配进其单元格并居中。如果你的精灵本就是相同的正方形,把瓦片尺寸设为一致,它们就会原样通过。
相关工具
材质设计颜色选择器
浏览Material Design色板,单击即可将任意色号(50至A700)以HEX、RGB或 HSL 格式复制。
GIF 制作器
将一组图片转换为动画 GIF。导出前可调整帧率、质量和尺寸。
图片尺寸调整器
将图片调整到精确的像素尺寸或百分比,同时保持宽高比。适合批量准备图片,无需上传。
图像放大器
使用 AI 超分辨率或经典插值,将低分辨率图像放大 2×、3× 或 4×,同时保留重要细节。
抽奖券制作工具
为非正式活动创建私密的双联连续编号票券页。可打印所有 A4 或 US Letter 页面,或下载当前页面。
BMP 转 PNG
在浏览器中将 BMP 文件转换为 PNG。无损转换,保留每一个像素,32 位 BMP 的 alpha 通道也会带入 PNG。