抠图PNG放进WebGL白边更重?上传和混合要配套
把抠好的透明 PNG 放到深色背景上以后边缘一圈发白。很多人搜「抠图 白边」就是因为这个。我这次想弄清的是另一半问题同一张 PNG 放进 canvas 2D 和放进 WebGL 以后白边会不会一样重。结论是不一样。WebGL 里有一种很常见的配法会让半透明边的亮度直接翻一倍。先交代文件从哪来抠图我用的是图映 ImgIng的快速档 ISNet INT8样本是两张网上找的白底图导出后我统一合成到黑底看边缘。模型约 42 MB下载一次后抠图都在浏览器里完成。导出时我开着 Network 面板看了一路非 GET 请求一直是 0。商品图能不能出内网在我们这边要先过合规。精修区有句原话「默认逐像素直接使用 AI 输出不改透明度、不改边缘颜色」。导出文件里的半透明边就是模型给的原样后面量到的偏差只能算在文件和合成头上。默认导出的边缘本身亮了约11小狗图出自 Wikimedia Commons作者 George Hodan许可 CC0。默认导出的 113,438 个半透明像素原色平均亮度是 160.1。主体贴边 3 px 那一圈的平均亮度是 108.6。接近白色亮度 200 以上的半透明像素有 39.9%。半透明边里混着原来白底的颜色这就是发白的根。我按正确公式把它合成到黑底以后边缘平均亮度是 75.4。按主体色估算应该在 64.3 左右多出来约 11 个亮度单位。我测了一次 WebP 导出做对照两种格式的半透明像素数完全相同亮度差也不超过 0.2。格式不背锅。这 11 是文件自带的前端合成写对了也还在让我真正警觉的其实是下一步。直通和预乘存的是两种颜色透明图的颜色有两种存法直通 alpha 把颜色原样存下来透明度单独放一个通道。预乘 alpha 存的是颜色乘过透明度以后的值。PNG 按直通存往底色上合成时要先乘一次 alpha。预乘过的不能再乘。canvas 2D 在内部替你管了这件事WebGL 则要你自己配两处。一处是纹理上传时要不要预乘的UNPACK_PREMULTIPLY_ALPHA_WEBGL这个标志。另一处是blendFunc的第一个参数它决定混合时源颜色乘什么。两处不配套就会偏。配错上传方式会让边缘亮一倍测试用的是小狗默认导出里一块 480×480 px 的边缘裁块半透明像素共 43,740 个。我在 Chromium 149 里测了 canvas 2D 和 WebGL 的四种组合分别合成到黑底再把像素读回来。按公式算这块边缘的平均亮度应该是 54.9。这张图主要看三栏的下沿和毛尖左边 canvas 2D 的毛发往黑底过渡得很自然。中间是 WebGL 不预乘上传却配了 ONE 混合的结果肚皮下方多出一条亮白带毛尖也在发亮。右边预乘上传又配了 SRC_ALPHA 的那一栏边缘整体发暗发薄像被削掉了一圈。数字和肉眼对得上canvas 2D 读回 54.9和公式的最大差是 0。WebGL 不预乘上传配 SRC_ALPHA 和预乘上传配 ONE 读回来也都是 54.9。和公式的平均差只有 0.2。不预乘上传配 ONE 读回 108.9。边缘亮了一倍。它少乘了一次 alpha白底残留被原样放了出来。预乘上传配 SRC_ALPHA 读回 48.8alpha 被乘了两次以后边缘就暗了下去。我又在 CPU 上按三条公式各算了一遍结果同样是 54.9、108.9 和 48.8。两种错误就是少乘一次和多乘一次中间没有别的因素掺进来。去除背景色边改的是透明度文件自带的那 11 能不能先去掉图映精修区有个默认关闭的「去除背景色边」开关旁注写着「可选 · 会改变 AI 原始边缘」。小狗开了以后黑底上的边缘亮度是 76.0估算应有 75.6。白边基本没了。代价是这张图有 76,236 个像素的 alpha 被改前腿和肚皮交界处还多了一块锯齿硬边。主体里有接近白色的部分时它会连那部分一起压成透明。我现在倾向先不开它。前端合成的配对先弄对开不开再按图决定。上线前我先核对混合配置用 canvas 2D 合成的这一层基本不用担心。2D 画布读回的原色误差是 0alpha 小于 32 的像素也一样。用 WebGL 的先查上传标志和 blendFunc 是不是同一套。上传时没预乘混合就用 SRC_ALPHA上传时预乘了混合就用 ONE。我觉得最省事的核对办法是拿同一张透明图在 canvas 2D 上画一次当参照再和 WebGL 读回的边缘对照差得远就是配错了。这次只测了 Chromium 149WebGL 可能走的是软件渲染。Firefox 和 Safari 我还没测过。这块先留着。

相关新闻

基于SSM框架的学生信息管理系统设计与实现

基于SSM框架的学生信息管理系统设计与实现

1. 项目概述"学生成长档案 学籍 选课信息管理系统"是一款基于Java SSM框架开发的综合性教育管理平台。这个系统将传统纸质档案数字化,实现了学生从入学到毕业全周期的信息管理闭环。我在实际开发中发现,很多学校还在使用Excel表格管理学生信息…

2026/10/13 6:52:53 阅读更多 →
Python字符串处理与文本解析实战:日志清洗、数据脱敏到配置解析

Python字符串处理与文本解析实战:日志清洗、数据脱敏到配置解析

1. 项目概述1.1 核心需求解析说个实话,很多朋友练Python最头疼的不是语法不熟,而是不知道练什么,练到什么深度算合格。今天这篇是Python练习系列的第五篇,我把它定位成一个绕不开的核心主题:字符串处理与文本解析。为什…

2026/10/13 6:52:53 阅读更多 →
将 Nexent 智能体发布为 A2A 1.0 Agent:发布步骤与 REST / JSON-RPC 调用实战

将 Nexent 智能体发布为 A2A 1.0 Agent:发布步骤与 REST / JSON-RPC 调用实战

AI AgentAI 应用后端前端大模型RAG 【免费下载链接】nexent Nexent is a zero-code platform for auto-generating production-grade AI agents using Harness Engineering principles — unified tools, skills, memory, and orchestration with built-in constraints, feedba…

2026/10/13 6:52:53 阅读更多 →

最新新闻

Spring Boot 3.x API密钥轮换机制:从状态机设计到平滑过渡

Spring Boot 3.x API密钥轮换机制:从状态机设计到平滑过渡

做后端开发这几年,只要接口走的是 API 密钥认证,密钥轮换就是一个绕不开的话题。Spring Boot 3.x 项目里,密钥轮换的坑尤其隐蔽:表面上看,更新一下数据库里的 key,客户端换一下配置就行,但实际一…

2026/10/13 7:38:09 阅读更多 →
深度学习优化算法与参数初始化:从梯度下降到动量实战

深度学习优化算法与参数初始化:从梯度下降到动量实战

2020年2月16日,我的深度学习笔记写到第八篇。上一篇从经验风险最小化聊到泛化误差,基本把“优化目标”讲清楚了;但目标归目标,真正让模型训练起来的是优化算法本身。这篇笔记把镜头拉到更新公式这一层,重点拆两块&…

2026/10/13 7:38:09 阅读更多 →
真三MOD专用蓝宝石渲染管线2.2b优化指南

真三MOD专用蓝宝石渲染管线2.2b优化指南

简介:本资源是魔兽争霸III玩家专用的自定义地图优化版本,面向熟悉真三国无双类RPG地图的中高级玩家,解决原版平衡性不足、技能冗余或运行卡顿等问题。压缩包为RAR格式,共2个文件:核心地图文件BT蓝宝石专署2.2b.w3x&…

2026/10/13 7:38:09 阅读更多 →
SpringBoot毕业生就业去向登记管理系统:毕设源码与二次开发指南

SpringBoot毕业生就业去向登记管理系统:毕设源码与二次开发指南

简介:这份资源是面向计算机专业毕业生与Java初学者的一套完整就业去向登记管理系统源码,可直接作为毕业设计或课程设计参考。系统基于SpringBoot框架开发,覆盖需求分析、总体设计、详细设计与功能测试全流程,包含功能结构、数据结…

2026/10/13 7:38:09 阅读更多 →
Spring Boot 3.x API密钥认证与密钥轮换实战指南

Spring Boot 3.x API密钥认证与密钥轮换实战指南

“你的服务对接了十几个下游调用方,大家约定好每次请求头里带一个 API Key,服务端校验通过才放行。密钥用了一年,安全团队突然要求立即轮换,你改配置、重启、发通知,结果重启期间服务不可用,调用方新旧密钥…

2026/10/13 7:38:09 阅读更多 →
链表分解:从内存布局到指针偏移的底层实践

链表分解:从内存布局到指针偏移的底层实践

1. 项目概述:这不是“拆链子”,而是把链表“掰开揉碎”讲清楚 “链表的分解”这五个字,乍看像一道算法题的标题,但实际在一线教学、代码评审和系统调试中,它代表一种极其关键的底层思维训练——不是单纯地写个反转或删…

2026/10/13 7:37:09 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →