精灵提取器
Drop files here or click (max 12 MB)
为何使用此精灵提取器?
- 基于透明度及可配置阈值的自动精灵检测
- 干净裁剪,可选修剪每个精灵周围的透明边框
- 控制内边距、对齐方式(居中/底部)及可选的统一输出尺寸
- 保留PNG导出的透明度(Alpha通道)—— 适用于瓦片地图和角色
- 所有检测到精灵的可视化图库,便于下载前快速检查
- 使用JSZip进行客户端ZIP导出,保持文件名和精灵顺序稳定
- Scratch友好:快速将单个精灵图转换为多个造型或资源
- 完美适用于跨引擎资源复用(Scratch、Godot、Unity 2D、Phaser等)
🛠️ 如何从精灵图提取精灵 for sprite-extractor
1. 拖入图像
将精灵图或图像拖放至投放区,或点击选择文件。为获得最佳效果,请使用带透明背景的PNG或精灵与背景高对比度的图像。
2. 运行自动检测
工具将图像的轻量表示发送至检测端点,该端点基于透明度和最小尺寸计算每个精灵的边界框。边界框会叠加在图像上,便于快速查看将要导出的内容。
3. 调整提取选项
调整内边距、透明背景与纯色背景、透明边缘修剪、对齐方式(居中或底部)及可选的统一输出宽度/高度。工具会据此重建每个精灵画布。
4. 预览精灵
滚动浏览生成的精灵图库。每个预览均在客户端使用离屏画布构建,可根据UI选项重命名或丢弃。
5. 下载PNG或ZIP
导出单个PNG精灵或下载包含所有当前预览的ZIP文件。ZIP使用JSZip在客户端构建,文件名遵循顺序模式如<code>sprite_0000.png</code>、<code>sprite_0001.png</code>等。
技术规格
检测与边界框
检测阶段在专用后端端点运行,返回客户端用于构建最终精灵的清晰边界框。
| 方面 | 行为 | 备注 |
|---|---|---|
| 检测端点 | POST /api/sprite-extractor/inspect | 接受数据URL和检测选项,返回一个精灵框数组。 |
| 检测输入 | 容差、透明度阈值、最小宽度、最小高度 | 在用户界面中调整这些参数以忽略微小噪点或仅捕获有意义的精灵。 |
| 框形状 | 轴对齐矩形 | 每个<code>SpriteBox</code>包含源图像坐标中的<code>x</code>、<code>y</code>、<code>width</code>、<code>height</code>。 |
| 透明度处理 | 支持透明度 | 透明像素会影响裁剪/修剪决策,但可以在输出中保留。 |
| 错误处理 | 优雅降级 | 如果检测失败,工具会显示可读错误信息,不会破坏用户界面。 |
裁剪、修剪与对齐
一旦框确定后,所有精灵渲染均在浏览器中使用HTML画布完成。
| 步骤 | 实现方式 | 详情 |
|---|---|---|
| 初始裁剪 | drawImage(img, box.x, box.y, w, h, 0, 0, w, h) | 每个精灵首先从原始图像裁剪到临时画布上。 |
| 透明修剪 | 通过getImageData扫描Alpha通道 | 启用修剪时,工具扫描像素以计算最小的非透明边界框。 |
| 内边距 | 可配置0–256像素 | 在修剪或裁剪的精灵周围应用内边距,以减少引擎中的边缘伪影。 |
| 对齐 | 居中 / 底部对齐 | 精灵可以居中或底部对齐(适用于站在基线上的角色)。 |
| 统一输出尺寸 | 可选spriteWidth / spriteHeight | 启用后,所有精灵将渲染到固定尺寸的画布中以标准化动画。 |
| 背景 | 透明或纯色 | 保持完全透明或用选定的RGBA颜色填充画布。 |
性能与限制
专为浏览器中的交互使用设计。
| 参数 | 典型行为 | 备注 |
|---|---|---|
| 最大输入尺寸 | 约10MB图像 | 较大文件仍可能工作,但加载/检测速度会更慢。 |
| 精灵数量 | 最多约400个精灵 | 可实现更高数量,但预览渲染和ZIP创建将耗时更长。 |
| 导出格式 | ZIP内的PNG(Blob) | ZIP完全使用JSZip在客户端生成。 |
| 画布操作 | 逐精灵裁剪和绘制 | 依赖浏览器的2D画布API;性能随分辨率和数量变化。 |
命令行替代方案
对于大型精灵图或自动化流程,您可以结合使用ImageMagick等CLI工具与脚本。
Linux / 🍎 macOS
使用ImageMagick进行均匀网格裁剪
convert spritesheet.png -crop 64x64 +repage sprite_%04d.png将规则的64×64网格切割成单独的PNG文件。
压缩所有精灵
zip sprites.zip sprite_*.png将所有生成的精灵打包成单个归档文件。
Windows (PowerShell + ImageMagick)
基于网格的裁剪
magick spritesheet.png -crop 64x64 +repage sprite_%%04d.png与上述相同,在Windows上使用<code>magick</code> CLI。
实际应用场景
2D游戏开发
- 从精灵图中提取角色动画帧,用于Godot、Unity 2D、Phaser或Construct。
- 从设计稿中分离UI元素(按钮、图标、血条)。
- 将图块集分解为单个图块,用于关卡编辑器。
// Godot示例:加载多个帧\nvar frames = []\nfor i in range(0, 8):\n frames.append(load(\"res://sprites/hero_walk_\" + str(i).pad_zeroes(2) + \".png\"))Scratch与课堂项目
- 将单个精灵图转换为Scratch角色的多个造型。
- 为编程工作坊准备主题资源包(动物、行星、图标)。
- 让学生在绘图工具中设计精灵图,然后提取用于Scratch。
// Scratch风格伪代码实现简单动画\n当绿旗被点击\n重复执行\n 下一个造型\n 等待0.1秒像素艺术与资源库
- 将旧像素艺术图集拆分为可搜索的独立精灵库。
- 从大型商业或开源资源包中仅提取所需素材。
- 统一来自不同来源的精灵内边距与对齐方式。
❓ Frequently Asked Questions
❓精灵检测是否全自动?
📏提取器会修改原始图像吗?
🎯能否控制内边距与对齐?
🔒我的图像会存储在服务器上吗?
🧊导出精灵会保留透明度吗?
Pro Tips
为每个精灵添加少量内边距(2–4像素),防止在引擎中缩放或旋转时出现边缘渗色。
统一命名精灵(如<code>hero_run_0001.png</code>、<code>hero_run_0002.png</code>)以简化动画导入与脚本编写。
教学场景中建议从极简精灵图集入手(大尺寸精灵、清晰背景),让学生即时看到成果。
将导出的ZIP文件与项目源文件共同存放,便于后续重新生成或调整动画。
Additional Resources
Other Tools
- CSS 美化器
- HTML 美化器
- JavaScript 美化器
- PHP 美化器
- 颜色选择器
- Base64 解码器
- Base64 编码器
- C# 格式化器
- CSV 格式化器
- Dockerfile Formatter
- Elm 格式化器
- ENV 格式化器
- Go 格式化器
- GraphQL 格式化器
- HCL 格式化器
- INI 格式化器
- JSON 格式化器
- LaTeX 格式化器
- Markdown 格式化器
- Objective-C 格式化器
- Php Formatter
- Proto 格式化器
- Python 格式化器
- Ruby 格式化器
- Rust 格式化器
- Scala 格式化器
- Shell 脚本格式化器
- SQL 格式化器
- SVG 格式化工具
- Swift 格式化工具
- TOML 格式化工具
- Typescript Formatter
- XML 格式化工具
- YAML 格式化工具
- Yarn 格式化工具
- CSS 压缩器
- Html Minifier
- Javascript Minifier
- JSON 压缩器
- XML 压缩器
- HTTP 头部查看器
- PDF 转文本
- 正则表达式测试器
- 搜索引擎排名检查器
- Whois 查询