Java 反转反除法的颜色结果int

Java 反转反除法的颜色结果int,java,math,Java,Math,我正在与RGB一起工作,我的数学有问题。除非我看错了下面的引文,否则我需要取这个结果,它是一个看起来像0.01234的值,并将其反转bgc=底色和fgc=顶色。我在转换结果时遇到了问题。现在我得到的是颜色减淡效果,而不是颜色燃烧效果。我试过乘法、除法、加法、减法,但似乎什么都没用。我可以做些什么来反转结果 (255f - (float)bgc[0]) / (fgc[0] << 8) (255f-(float)bgc[0])/(fgc[0]我明白了: public static in

我正在与RGB一起工作,我的数学有问题。除非我看错了下面的引文,否则我需要取这个结果,它是一个看起来像
0.01234
的值,并将其反转
bgc=底色
fgc=顶色
。我在转换结果时遇到了问题。现在我得到的是
颜色减淡
效果,而不是
颜色燃烧
效果。我试过乘法、除法、加法、减法,但似乎什么都没用。我可以做些什么来反转结果

(255f - (float)bgc[0]) / (fgc[0] << 8)
(255f-(float)bgc[0])/(fgc[0]我明白了:

public static int colorBurn(int bg, int fg){
    int[] bgc = Colors.getrgba(bg);
    int[] fgc = Colors.getrgba(fg);
    int r = (int)Math.min(255, 255 * (1 - (1 - (bgc[0] / 255f)) / (fgc[0] / 255f)));
    int g = (int)Math.min(255, 255 * (1 - (1 - (bgc[1] / 255f)) / (fgc[1] / 255f)));
    int b = (int)Math.min(255, 255 * (1 - (1 - (bgc[2] / 255f)) / (fgc[2] / 255f)));
    r = r < 0 ? 0 : r;
    g = g < 0 ? 0 : g;
    b = b < 0 ? 0 : b;
    return Colors.rgba(r, g, b);
}
公共静态int-colorBurn(int-bg,int-fg){
int[]bgc=Colors.getrgba(bg);
int[]fgc=Colors.getrgba(fg);
int r=(int)Math.min(255255*(1-(1-(bgc[0]/255f))/(fgc[0]/255f));
intg=(int)Math.min(255255*(1-(1-(bgc[1]/255f))/(fgc[1]/255f));
intb=(int)Math.min(255255*(1-(1-(bgc[2]/255f))/(fgc[2]/255f));
r=r<0?0:r;
g=g<0?0:g;
b=b<0?0:b;
返回颜色.rgba(r,g,b);
}

很酷。很高兴你找到了答案。我还删除了我的答案。
public static int colorBurn(int bg, int fg){
    int[] bgc = Colors.getrgba(bg);
    int[] fgc = Colors.getrgba(fg);
    int r = (int)Math.min(255, 255 * (1 - (1 - (bgc[0] / 255f)) / (fgc[0] / 255f)));
    int g = (int)Math.min(255, 255 * (1 - (1 - (bgc[1] / 255f)) / (fgc[1] / 255f)));
    int b = (int)Math.min(255, 255 * (1 - (1 - (bgc[2] / 255f)) / (fgc[2] / 255f)));
    r = r < 0 ? 0 : r;
    g = g < 0 ? 0 : g;
    b = b < 0 ? 0 : b;
    return Colors.rgba(r, g, b);
}