← 博客
阅读约 5 分钟

透明 PNG 为什么会变成白底?原因与修复方法

透明 PNG 发出去却变成白底?alpha 会在转存 JPEG、印刷预设、邮件正文和平台上传这几步被悄悄压平。本文讲清原因,并给出发送前三十秒的自查办法。

  • transparent png
  • alpha channel
  • png vs jpeg
  • background removal
  • file formats
  • webp
  • exporting
  • design workflow
透明 PNG 为什么会变成白底?原因与修复方法

你把一张商品照抠好,存成一张背景真正透明的 PNG,拖进幻灯片里。它带着一个白色方框出现了。或者在演示文稿里看着好好的,导出成 PDF 之后却变白了。

文件本身多半没有问题。透明能不能活下来,取决于你和观看者之间的每一个程序是否都愿意把它带上——而其中好几个悄悄不带。整个过程没有任何提示,因为在软件看来什么都没出错。几乎所有这类情况,都能用同一条规律解释清楚。

JPEG 没有 alpha 通道

PNG 可以在每个像素的颜色旁边再存一个 alpha 值。alpha 就是不透明度:0 是完全透明,最大值是完全不透明。抠图之所以能成其为抠图,全靠它。

JPEG 里没有对应的东西。“这个像素是空的”在 JPEG 里无处安放,所以任何要重新编码成 JPEG 的程序,都得替原本透明的地方决定填什么。它会把你的抠图合成到一块纯色上,把这个颜色固化进像素里,然后丢掉 alpha。结果是一张完全合法的图片:你的商品,躺在一块有颜色的矩形上。

那个颜色通常是白色。少数工具改填黑色,于是抱怨反了过来:主体周围出现一块黑色矩形。还有一种长得很像、其实根本不是压平的情况——深色 logo 在开了深色模式的邮件客户端里消失不见。那里的透明恰恰在正常工作,透出来的是深色背景。解法是在标志下面垫一块浅色底板,或者换一版深色背景专用的浅色标志,而不是重新导出。

alpha 在哪里活下来,又在哪里死掉

与其去背哪些软件靠谱,不如学会认出重新编码这一步:只要有程序读进你的像素、再写出去,你的 alpha 通道就重新回到了谈判桌上。抠图粘进幻灯片、之后再导出,就是大多数人碰到的那个版本。

一位女士站在投影幻灯片前,屏幕上是珊瑚色背景的折线图,两位同事坐着观看

  • 粘贴进文档或幻灯片。 Word 和 PowerPoint 在屏幕上一般会保留透明;出问题的很少是粘贴这一步,而是导出。
  • 任何“另存为 JPEG”。 必然丢失,包括那些悄悄发生的:某个工具提供“网页优化”,然后替你选了 JPEG。
  • PDF 与印刷交付。 从 PDF 1.4 起 PDF 就能承载透明,日常用的导出工具大多也会保留。风险藏在印刷预设里:PDF/X-1a 这类较早的印前标准不允许保留活的透明——2001 年那一版建立在 PDF 1.3 之上,根本没有透明模型,2003 年那一版则直接明令禁止——所以透明的部分一律会被压平到页面上。如果印厂指定了某个预设,就问清楚它会怎么处理透明。
  • 邮件。 正文里的图片可能被某些写信程序在发出时重新编码,也可能在收信端经过图片代理;各家客户端表现不一,与其想当然,不如实测一次。作为附件发送要可靠得多。
  • 聊天、社交与电商平台上传。 这些管道为了省带宽,或者为了把一切统一成同一种格式,都会重新编码——不管你发过去的是什么。

表格软件值得单独测一次。放在单元格、图表或形状里的抠图,表现不一定和幻灯片上的一样,旧模板和新模板之间也可能不一样。如果同一张图在一个文件里正常、在另一个文件里出问题,先怀疑模板。

发送之前的三十秒自查

别相信缩略图。它坐在文件管理器自己那块底色上——浅色模式下是白的,深色模式下是深的——所以压平过的图和透明的图在那里看起来可以一模一样。

一双白色帆布运动鞋在明亮的洋红色纸面上俯拍

  1. 把图放到鲜艳的颜色上。 在幻灯片或设计工具里画一个洋红色矩形,把抠图放上去。你能看见的任何白色,都是固化进去的。
  2. 确认真实格式。 一个叫 logo.png 的文件可能是改了名的 JPEG。Windows 和 macOS 都按扩展名给标签,所以标错名的文件照样显示成 PNG。用图像编辑器打开,看它报告的格式,或者从设计工具里干干净净地重新导出一张 PNG。
  3. 测渠道,不只测文件。 让一张图片走一遍它真正要走的路线:发封邮件给自己,发到一个私密测试账号,或者拿一件商品走一遍平台上传。

如果第一步过了、第三步没过,那就是文件没问题,是这条渠道在把它压平。

别再硬扛,直接自己挑一个颜色

对那些注定要压平的去处,干脆自己挑填充色。导出时就让抠图坐在你要的那个颜色上,这样一来,就没有任何合成决定留给别人替你做了。

一叠扇形摊开的油漆色卡特写,红、粉、绿、蓝各色铺在紫色桌面上

remover.bg 里的编辑器就是干这个的:背景去掉之后,把主体放到纯色、自定义颜色或你自己的照片上,再加一层阴影,让它不显得是贴上去的。把透明 PNG 当母版留着,每一份压平的副本都只当交付文件看。

如果去处支持,WebP 能像 PNG 一样携带透明,文件还更小——见支持 WebP:直接上传与导出,无需转换。如果你拿不准某个活儿到底需不需要透明,透明 PNG 怎么做?几秒搞定讲清楚了;而变白的那个东西如果是品牌标志,如何去除 Logo 背景并导出透明 PNG里有平面图形需要的那几项边缘检查。

两个文件,一个决定

透明母版留着,再为每个非要压平不可的去处做一份压平副本,颜色由你来定。那个白色方框从来不是你抠图的毛病——那是某个程序在回答一个你根本没意识到它正在问的问题。

继续阅读