3

我正在调整可能具有 alpha 通道的 png 图像的大小。

一切都很好,除了一个例外:透明区域周围有一些灰色像素。

原始图像没有任何阴影。

有没有办法解决这个问题/解决它?

错误的阿尔法值

我正在使用 Gustavo Daud 的 SmoothResize(请参阅此问题的第一个答案)来调整 png 图像的大小。

我无法提供我正在使用的代码,因为我没有编写它并且没有作者的许可来发布它。

4

1 回答 1

1

我怀疑这是由两件事引起的:PNG 中有趣的 RGBA 值和天真的调整大小代码。

您需要检查您的 PNG 内容。您正在寻找透明区域中的 RGB 值。尽管透明区域的 Alpha 为 0,但它们仍然具有 RGB 信息。在您的情况下,我希望透明区域充满黑色 RGB 值。如果天真地调整大小,这可能会导致调整大小后出现灰色轮廓。示例:如果代码将 2 个调整像素 (0,0,0,0) 和 (255,255,255,255) 调整为一个,会发生什么情况?两个像素贡献了 50% 结果是 128,128,128,128),它是半透明的灰色。当您升级例如 x1.5 时也会发生同样的事情,原始两个像素之间添加的像素将是灰色的。通常这不会发生,因为图像编辑软件足够智能,可以用最近的可见像素的颜色填充这些不可见像素。

您可以尝试通过用白色(或图像边框上的其他颜色)填充透明区域来“修复”PNG。

另一种方法是使用高级调整大小代码(编写或查找库),它将忽略透明像素 RGB 值(例如,通过从最近的非透明像素获取 RGB)。

于 2013-09-15T06:12:57.303 回答