繁体   English   中英

在Delphi中调整png图像大小 - 不正确的Alpha通道

[英]Resize png image in Delphi - incorrect alpha channel

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

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

原始图像没有任何阴影。

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

错误的alpha值

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

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

我怀疑这是由两件事引起的: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)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM