gpt4 book ai didi

flash - 将 alpha 值添加到双线性调整大小算法

转载 作者:行者123 更新时间:2023-12-02 07:56:58 25 4
gpt4 key购买 nike

因此,我尝试采用双线性插值算法来调整图像大小并添加 alpha 值。我正在使用 Actionscript 3 来执行此操作,但我并不认为该语言是相关的。

我在下面的代码实际上效果很好,但是“删除”区域周围的边缘似乎变暗了。当它找到它的平均值时,有没有一种简单的方法可以不包括我只能假设是黑色(0x00000000)的东西?

代码:

x_ratio = theX - x;
y_ratio = theY - y;
x_opposite = 1 - x_ratio;
y_opposite = 1 - y_ratio;

a = getPixel32(x, y);
be =getPixel32(x + 1, y);
c = getPixel32(x, y + 1);
d = getPixel32(x + 1, y + 1);
alph = (t(a) * x_opposite + t(be) * x_ratio) * y_opposite + (t(c) * x_opposite + t(d) * x_ratio) * y_ratio;
red = (r(a) * x_opposite + r(be) * x_ratio) * y_opposite + (r(c) * x_opposite + r(d) * x_ratio) * y_ratio;
green = (g(a) * x_opposite + g(be) * x_ratio) * y_opposite + (g(c) * x_opposite + g(d) * x_ratio) * y_ratio;
blue = (b(a) * x_opposite + b(be) * x_ratio) * y_opposite + (b(c) * x_opposite + b(d) * x_ratio) * y_ratio;

效果图: http://beta.shinyhammer.com/images/site/eraser_pixelborders.jpg

发布解决方案代码!
a = getPixel32(x, y);
be =getPixel32(x + 1, y);
c = getPixel32(x, y + 1);
d = getPixel32(x + 1, y + 1);
asum = (t(a) + t(be) + t(c) + t(d)) / 4;

alph = (t(a) * x_opposite + t(be) * x_ratio) * y_opposite + (t(c) * x_opposite + t(d) * x_ratio) * y_ratio;
red = ((r(a) * t(a) * x_opposite + r(be) * t(be) * x_ratio) * y_opposite + (r(c) * t(c) * x_opposite + r(d) * t(d) * x_ratio) * y_ratio);
red = (asum > 0) ? red / asum : 0;
green = ((g(a) * t(a) * x_opposite + g(be) * t(be) * x_ratio) * y_opposite + (g(c) * t(c) * x_opposite + g(d) * t(d) * x_ratio) * y_ratio);
green = (asum > 0) ? green / asum : 0;
blue = ((b(a) * t(a) * x_opposite + b(be) * t(be) * x_ratio) * y_opposite + (b(c) * t(c) * x_opposite + b(d) * t(d) * x_ratio) * y_ratio);
blue = (asum > 0) ? blue / asum : 0;

最佳答案

在使用它们之前,您需要将每个 r、g、b 值乘以相应的 alpha,然后在完成后将这些值除以最终的 alpha。很容易想象当其中一个像素的 alpha 为零时会产生什么效果 - 每个 r、g、b 值都将乘以零,因此它们的原始值是什么根本不重要!他们不会对最终结果做出贡献。

您需要添加一个检查,以便您永远不会除以零,并确保舍入误差不会将您的最终值推到上限之上。

通常图像将存储在内存中,alpha 已经乘以 r,g,b 值 - 这称为预乘 alpha (Wikipedia reference)。

关于flash - 将 alpha 值添加到双线性调整大小算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/347294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com