我正在调整可能具有Alpha通道的png图像。
一切都很好,但有一个例外: 我在透明区域周围有一些灰色像素。
原始图像没有任何阴影。
有没有办法解决这个问题/解决它?
我正在使用Gustavo Daud的SmoothResize(请参阅this question的第一个答案),以调整png图像的大小。
我无法提供我正在使用的代码,因为我没有写它并且没有作者的许可才能发布它。
答案 0 :(得分: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)。