# NzSOwDHlgiPCx9klcKWcxzawnhe Source: https://dianchukeji.feishu.cn/wiki/NzSOwDHlgiPCx9klcKWcxzawnhe # 一.工作内容概述 - 持续推进碎片收集系统进度 - 尝试使用AI制作图片处理工具,解决之前遇到的“边缘问题” # 二.图片处理工具 ## 问题背景 在之前的尝试中,AI生成的单个按钮、图标或面板,视觉上看起来可用,但边缘像素通常不适合直接作为游戏资源使用,体现在如下方面: - 背景不是真实透明背景,而是被绘制上去的真实像素。 - 使用AI进行抠图无法解决边缘问题,产出的图片边缘存在大量瑕疵,完全无法使用 ## 尝试思路 尝试使用AI编写工具来进行资源的处理,思路如下: 使用特定颜色(如洋红色#FF00FF) 作为临时背景识别色工具通过这个颜色判断背景区域。但不能简单地把所有接近 #FF00FF 的像素都删除,因为素材内部也可能有粉色、紫色高光或装饰。因此需要通过“外部连通区域”来识别真正背景。 处理原则是: > [嵌入电子表格: HcE6syErph4tJ9tlkn0c...] 也就是说,目标不是把素材变成纯扁平图形,而是把它处理成:**主体仍然有质感,但外部轮廓干净、透明、无紫边。** 如果输入图是高像素版本,例如目标尺寸的 3 倍或 4 倍,工具可以先完成边缘处理,再缩小到目标尺寸。 这样可以减少: - 紫边; - 锯齿; - AI 生成噪点; - 边缘不稳定像素。 但也要注意: - 小高光可能变弱; - 极细描边可能变淡; - 图标细节可能略糊。 所以缩放需要使用高质量算法,并允许轻微锐化。 ## 流程原理梳理 ### 颜色距离检测:判断像素是否接近背景色 工具首先计算每个像素与 #FF00FF 的颜色距离。 背景色为: 颜色距离计算: 距离越小,说明像素越接近背景色。 这一步的作用是: - 识别纯背景像素 - 识别接近背景色的混色像素 - 辅助判断紫边污染 不会直接删除像素,只是生成“背景候选区域”。 ### 泛洪填充:只识别外部背景 仅靠颜色距离还不够,因为素材内部也可能有类似颜色。 因此工具从画布四周开始做泛洪填充:从图片四条边缘开始,找到接近 #FF00FF 的像素,向相邻像素扩散,只把与画布外部连通的区域标记为背景。这样可以避免误删素材内部的粉色或紫色内容。 例如:按钮内部的粉色高光,如果没有和外部背景连通,就不会被识别为背景 这一步会得到背景 Mask:背景区域 = 1,非背景区域 = 0 ### 提取素材主体 Mask 背景 Mask 取反后,就可以得到素材主体的大致区域:主体 Mask = 非背景区域 但这个主体 Mask 还不一定干净,因为它可能包含: - 真正的按钮主体 - 正常抗锯齿边缘 - 外部阴影残留 - 外发光残留 - 紫边污染像素 所以这一步只是得到粗略主体,后续还需要边缘清理。 ### 生成边缘检测区 为了只处理边缘问题,不误伤按钮内部质感,工具会基于主体 Mask 生成一圈边缘检测区。 方法是: 这个区域主要用于检查: - 外部阴影、发光 - 混色边缘 - 灰色软边等 这样工具只会重点处理素材外轮廓附近的问题,不会大范围修改按钮内部的高光、渐变和描边。 ### 识别外部污染像素 工具在边缘检测区中判断哪些像素属于污染。 判断依据主要有两个: - 位置在主体外轮廓附近 - 颜色接近 #FF00FF 或明显偏紫 / 偏灰 / 偏蓝光晕 污染大致分三类: > [嵌入电子表格: HcE6syErph4tJ9tlkn0c...] ### 边缘去污染:修正紫边 紫边的本质是主体颜色与背景色混合: 例如白色按钮边缘与紫色背景混合后,就会变成淡紫色。 工具处理时分两种情况: 这类像素不属于素材本体,直接删除: 这类像素可能是正常抗锯齿,只是颜色被污染。 如果直接删除,会让按钮边缘变硬或破损。 更合理的方式是:找到紫边像素后,在附近寻找干净的主体颜色,用邻近主体颜色修正紫边 这样可以做到:去掉紫边,保留正常边缘过渡,避免按钮轮廓被硬切 ### 生成真实 Alpha 通道 清理背景和边缘污染后,工具生成最终透明通道。 规则如下: 最终结果是: 此时 #FF00FF 背景已经被完全移除,最终图片是真正的透明 PNG。 ### 自动裁切与安全边距 生成 Alpha 后,工具根据非透明区域计算最终裁切范围: 安全边距的作用是: - 避免素材贴边 - 防止缩放时边缘被裁掉 - 方便导入引擎后对齐 ### 高像素缩放与轻微锐化 如果输入图是高像素版本,工具可以在边缘处理完成后缩放到目标尺寸,可以起到如下效果: - 减少锯齿 - 弱化残留噪点 - 让边缘更稳定 如果缩放后素材边缘变软,可以做轻微锐化用来恢复。 ## 效果展示 ![图片](../feishu-images/NzSOwDHlgiPCx9klcKWcxzawnhe_HqrDb9mWaoUn.png) ![图片](../feishu-images/NzSOwDHlgiPCx9klcKWcxzawnhe_DeSQbFvuOoe7.png) ![图片](../feishu-images/NzSOwDHlgiPCx9klcKWcxzawnhe_RN1ubzUQrojf.png) ![图片](../feishu-images/NzSOwDHlgiPCx9klcKWcxzawnhe_SrRGbt21Uo3S.png) ![图片](../feishu-images/NzSOwDHlgiPCx9klcKWcxzawnhe_SStPbbVsKo8p.png) ![图片](../feishu-images/NzSOwDHlgiPCx9klcKWcxzawnhe_SO3IbwHRSoB4.png) ![图片](../feishu-images/NzSOwDHlgiPCx9klcKWcxzawnhe_YeeVbZmbzoT8.png) ![图片](../feishu-images/NzSOwDHlgiPCx9klcKWcxzawnhe_TwojbFiQZopT.png) ![图片](../feishu-images/NzSOwDHlgiPCx9klcKWcxzawnhe_FnOEbE6YDoad.png) 当前版本相比前一版已经明显稳定,核心问题基本从“紫边 / 伪透明 / 抠图失败”转变为“白色 UI 柔边在深色背景下的显示适配”。 从检查结果看,图片 Alpha 状态正常,存在完整透明区、半透明边缘区和不透明主体区,背景已经是真透明,并不是伪透明背景,也不是黑底或压缩问题。 目前紫边的问题已基本解决,缩放锯齿也在可接受范围内。剩余主要问题是部分按钮边缘仍有浅色半透明柔边,在黑色或深色背景下会显示成灰白边。这主要来自按钮本身的白色柔边和浅蓝描边,不属于抠图异常。 ## 仍未解决的问题