You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何将Adobe Animate导出的Texture Atlas转换为图片

将Texture Atlas(精灵图集)拆分单张图片的Python方案

第一步:解析spritemap1.json提取子图信息

精灵图集的JSON文件核心是记录每个子图的位置、尺寸和名称,先读取并解析这个文件:

import json
from PIL import Image

# 读取图集元数据
with open('spritemap1.json', 'r', encoding='utf-8') as f:
    sprite_data = json.load(f)

# 打开原图集图片
atlas_img = Image.open('spritemap1.png')

第二步:批量裁剪并保存子图

不用复杂的粘贴操作,直接用Pillow的crop()方法裁剪对应区域即可,这是最直接的方式:

# 多数图集工具导出的子图数据会存在'frames'键下,若结构不同可打印sprite_data确认层级
for sprite_name, sprite_info in sprite_data['frames'].items():
    # 提取子图坐标与尺寸,部分JSON会把这些数据放在'frame'子字典里
    frame = sprite_info.get('frame', sprite_info)
    x, y = frame['x'], frame['y']
    w, h = frame['width'], frame['height']
    
    # 裁剪区域格式:(左边界, 上边界, 右边界, 下边界)
    cropped_img = atlas_img.crop((x, y, x + w, y + h))
    
    # 以子图名称为文件名保存
    cropped_img.save(f'{sprite_name}.png')

关于Animation.json的处理

如果这个文件是动画序列配置,里面通常会记录动画对应的子图名称、播放顺序、时长等信息。先打印它的结构来明确数据层级:

with open('Animation.json', 'r', encoding='utf-8') as f:
    anim_data = json.load(f)
print(json.dumps(anim_data, indent=2))

根据输出的结构,比如若某个动画的帧列表存在animations['walk']['frames']下,就可以提取对应的子图名称,再从已裁剪好的图片里按顺序整理成动画(比如用imageio生成GIF)。

常见问题排查

  • 若JSON结构和示例不符,先打印sprite_data确认子图数据所在的键名(比如部分工具会用textures代替frames)。
  • 确认坐标是基于图集左上角的绝对位置,这是绝大多数图集工具的标准输出逻辑。

内容的提问来源于stack exchange,提问作者bpforest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:02:43