Labs · PNG 卡图工具

JSON 进,PNG 出,
或者反过来

从 PNG 角色卡里取出原始 JSON;或把 JSON 卡写进任意底图的 chara / ccv3 数据块——字节级 PNG 手术,在你的浏览器里本地完成。

免费本地运行 · 不上传往返逐字节验证

把 PNG 角色卡拖进来,或点击选择

.png(含 chara / ccv3 数据块的卡图)

字节级操作全部发生在你的浏览器里——文件不上传、不留存,页面加载完断网也能用。

提取结果会出现在这里。

字节层是怎么做的

读取侧遍历 PNG 全部数据块,tEXt / iTXt / zTXt 三种承载都认,ccv3 优先于 chara——与酒馆家族同序,也是我们给 App 写导入链时拿 34 张真实社区卡逐一实测核定过的读取行为。写入侧按规范组装数据块:长度、类型、数据、再对「类型+数据」算 CRC32 校验和,插在 IHDR 之后、图像数据之前。

写入前会把底图已携带的旧卡数据块全部剥除(chara、ccv3,三种文本块形态都剥),不会出现一张图里藏着两套卡数据的情况。嵌入链在开发期做过逐字节往返测试:嵌入、提取、比对,JSON 一字不差。

它不做什么

不碰像素——嵌入只是加元数据块,提取只是读元数据块。数据块是明文 base64,不是加密:任何人拿到卡图都能读出内容,这就是这个格式在所有前端的工作方式,别把私密设定寄托在「图看不出来」上。卡 JSON 里各站点的私有字段原样携带、不做解读。嵌入侧不收 .charx 压缩容器——先用格式转换器转出 JSON 再来。

常见问题

为什么卡图被截图或转发之后就导入不了了?

人设数据存在 PNG 的文本块(chara / ccv3)里,不在像素里。截图只重画像素;聊天软件和社交平台以「图片」方式转发时会重新压缩,同样把文本块洗掉。图还是那张图,卡已经没了。卡图要以「文件」方式传;数据丢了的卡,用这页的嵌入功能拿 JSON 重新做一张就行。

chara 和 ccv3 数据块是什么?

酒馆系约定的两种 PNG tEXt 文本块,内容是 base64 编码的卡 JSON。chara 是 V2 时代的经典键名;ccv3 是 chara_card_v3 规范的键名,两个都在时读取方优先读 ccv3。本工具恒写 chara,卡声明为 V3 时同时写 ccv3——与主流导出器的双写惯例一致。

这里生成的 PNG 卡,酒馆和其它前端能读吗?

能。产物是标准 PNG,文本块落在 IHDR 之后、图像数据之前——SillyTavern、RisuAI、Foreverse 的读取方都是遍历全部数据块,落位在哪不影响读取。我们做过逐字节往返验证:嵌入再提取,JSON 一字不差。

我的卡和图会被上传吗?

不会。数据块解析、base64 编解码、CRC32 校验、JPG 转 PNG 全部用浏览器标准能力在本地完成,页面加载完断网也能用。私人卡不出你的浏览器。

接着用

← 全部免费工具

PNG 卡图嵌入/提取 — JSON 和 PNG 角色卡在线互转,浏览器本地完成 · Foreverse · 新梦