为什么导出 PNG 会发虚:像素对齐与抗锯齿的十个检查点

先确认你看到的「虚」是哪一种

导出 PNG 发虚通常分三类:一是边缘发毛,像是被轻轻抹过;二是线条不锐利,1px 线像 0.5px;三是文字发灰或粗细不一致。不同的「虚」对应的根因不一样:像素对齐问题会让边缘发毛,缩放和插值会让线条不锐利,文字渲染与抗锯齿设置会造成发灰。先把症状说清楚,排查会快很多。

检查点一:所有关键边缘是否落在整数像素上

最常见的坑是元素位置出现 0.5px 或 0.25px。屏幕会对半像素做插值,结果就是边缘变软。做 UI 时尤其要注意:矩形的 x/y、宽高、描边位置都要是整数像素;如果有描边,尽量使用内描边,避免描边居中导致两侧各占半像素。

检查点二:1px 线条是否被缩放或被约束拉伸

设计稿里看着是 1px 的线,实际在导出前可能被整体缩放过一次。只要发生非整数倍缩放,1px 就会变成 1.2px 或 0.8px,然后由软件重新采样,锐度立刻下降。解决思路是:尽量在 100% 画板尺寸下绘制;需要多倍图时,用导出倍率而不是把画板放大再缩小。

检查点三:画板与导出倍率是否匹配目标设备

例如你要给移动端 3x 使用,却从一个并非基于 1x 的画板随手导出 3x,容易出现尺寸不对齐。推荐做法:先明确基准密度,统一使用 1x 画板尺寸;然后按 2x/3x 由导出工具生成。这样能避免不同页面「同一组件却清晰度不同」的情况。

检查点四:是否在导出链路里经历了二次压缩或重采样

很多人导出后又把 PNG 丢到聊天软件、在线压缩网站、或某个 CMS 自动处理。只要发生重采样,原本清晰的边缘就会被重新插值。排查方法很简单:拿「软件直接导出文件」与「上传后下载回来的文件」对比,如果后者更糊,问题在二次处理链路。解决方案是关闭自动缩放、改用原尺寸上传,或切换为不重采样的上传通道。

检查点五:文字是否被转曲或被栅格化为不合适的字号

文字发虚经常不是 PNG 的锅,而是字体渲染方式改变了:转曲后再缩放、或在非整数像素字号下渲染,都会让笔画发灰。建议:尽量让字号为整数;导出前不要对文字做非整数缩放;如果必须缩放,优先在最终尺寸下重新排版文字,而不是缩放整组图层。

检查点六:抗锯齿与像素对齐的取舍要一致

抗锯齿是用来让斜线更平滑的,但对水平和垂直边缘来说,过度抗锯齿会让边看起来软。实践建议:图标和线性 UI 元素优先像素对齐,保持锐利;插画、斜线和曲线元素允许抗锯齿换取平滑。不要在同一套图标里一半像素对齐、一半不对齐,这会造成整体风格不一致。

检查点七:是否使用了模糊、阴影、透明叠加导致「视觉虚化」

阴影的扩散和模糊半径会天然降低边缘对比度,尤其是小尺寸组件。你以为是导出糊了,其实是阴影太重。小图标建议使用更克制的阴影:降低模糊半径、提高不透明度并缩小扩散,或者用更短的投影距离。透明叠加也会让文字与线条对比下降,必要时提高前景对比度。

检查点八:查看方式是否正确

在浏览器里用非 100% 缩放查看 PNG,会触发浏览器重采样,看起来就像糊。正确做法是:在 100% 缩放下查看;或在系统图片查看器里以 1:1 像素查看。很多「导出有问题」其实只是查看方式的问题。

检查点九:Figma 与 Photoshop 的导出细节差异

同样的图,在不同软件里导出会因为插值策略不同而差一点点。Figma 更偏向界面资产,适合按倍图导出;Photoshop 更适合做精细的像素级调整。你的工作流可以这样分工:在 Figma 保证对齐和结构,在 Photoshop 做最终像素检查与微调,但尽量避免来回多次重采样。

一套可执行的快速排查流程

第一步:把画板缩放到 100%,检查关键元素坐标与尺寸是否为整数。第二步:确认导出倍率是 1x/2x/3x 的整数倍,不要在导出前做任意缩放。第三步:检查线条描边位置,优先使用内描边或对齐到像素网格。第四步:对文字做最终尺寸排版,避免缩放文字。第五步:导出后用 1:1 查看方式确认,再检查是否被上传链路二次处理。按这个顺序走,大多数发虚问题都能在 10 分钟内定位。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

暂无评论,快来抢沙发吧~

操作成功