gpt4 book ai didi

java - 混合像素函数的 Alpha

转载 作者:行者123 更新时间:2023-12-01 15:32:46 26 4
gpt4 key购买 nike

我在网上发现了这个函数,我将其应用于两个位图的每个像素,以进行混合:

private static int hardlight(int in1, int in2) {
float image = (float)in2;
float mask = (float)in1;
return ((int)((image < 128) ? (2 * mask * image / 255):(255 - 2 * (255 - mask) * (255 - image) / 255)));
}

但是我还需要调整混合蒙版的强度,因此我需要对其应用 Alpha,但我不知道该怎么做。

我在 http://www.pegtop.net/delphi/articles/blendmodes/opacity.htm 上尝试过这个方法,我将其翻译成 Java,如下所示:

private static int opacity(int a, int b, float o) {
return (int) (o * hardlight(a,b) + (255 - o) * a);
}

但结果是垃圾,颜色很奇怪。我在位图操作方面没有太多经验,所以有人可以帮助我吗?

最佳答案

在调用 hardlight 方法之前将此函数应用于您的 mask :

    private static int setAlphaToInt(int i, float percentage){
if(percentage < 0 || percentage > 100.0f){
throw new IllegalArgumentException();
}

int desiredAlpha = (int) (((float)0xff * percentage)/100.0f);
desiredAlpha = desiredAlpha << 24;
return ((i & 0x00ffffff) | desiredAlpha);
}

它产生一个 int 结果,其中最高 8 位(alpha 部分)设置为与作为参数传递的百分比成比例的值。例如,要创建 50% Alpha 的蒙版,请调用

int newMask = setAlphaToInt(oldMask, 50.0f);

关于java - 混合像素函数的 Alpha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9378375/

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