使用位图进行Java RGB操作

使用位图进行Java RGB操作,java,arrays,colors,bitmap,rgb,Java,Arrays,Colors,Bitmap,Rgb,这个问题可能有点让人困惑,但我们开始吧 所以,我看了一场比赛,他做了一些有趣的事情。他创建了一个位图类,将每个像素存储在一个数组中。(整数数组)。然后我想到了自己玩弄位图,然后我想到了操纵/改变位图的R、G和B 所以,我试着这样做: int rmod = 100; int gmod = 100; int bmod = 100; for (int i = 0; i < 64*64; i++) { int color = testBitma

这个问题可能有点让人困惑,但我们开始吧

所以,我看了一场比赛,他做了一些有趣的事情。他创建了一个位图类,将每个像素存储在一个数组中。(整数数组)。然后我想到了自己玩弄位图,然后我想到了操纵/改变位图的R、G和B

所以,我试着这样做:

    int rmod =  100;
    int gmod =  100;
    int bmod =  100;
    for (int i = 0; i < 64*64; i++) {
        int color = testBitmap.pixels[i];
        int r = color >> 16;
        int g = color >> 8;
        int b = color;

        r = (r/100)*rmod;
        g = (g/100)*gmod;
        b = (b/100)*bmod;

        testBitmap.pixels[i] =  r+b+g;
    }
int-rmod=100;
int gmod=100;
int bmod=100;
对于(int i=0;i<64*64;i++){
int color=testBitmap.pixels[i];
int r=颜色>>16;
INTG=颜色>>8;
int b=颜色;
r=(r/100)*rmod;
g=(g/100)*gmod;
b=(b/100)*bmod;
testBitmap.pixels[i]=r+b+g;
}
是的,我们的想法是rmod、gmod和bmod的工作原理类似于R G B的百分比。所以,当它们都为100时,位图正常显示就是我们的想法。然后,比方说,如果你把rmod改为150,R将是50%“更强”

现在,我知道我做错了一些事情。我认为int r,g和b是正确的。(虽然我不太明白“>>”是做什么的。我知道它会移位字节之类的,但我真的不明白。)在得到RG和b之后,我得到它们的1%,然后将它们与rmod、gmod和bmod中声明的百分比相乘。然后,我认为我在设置当前像素的新RGB的那一行中做了一些完全错误的事情。(testBitmap.pixels[i]=r+g+b;)

我不知道该怎么做。如果有人能解释“>>”是如何工作的,为什么它在这种情况下工作,以及如何通过rmod、gmod和bmod操纵RGB,我将非常高兴

这可能是因为我提供的信息太少,所以如果你需要查看课程等,我也可以在这里发布


谢谢大家!

首先,运算符
>
将位模式向右移位,不管移位的位置有多大。右移相当于除以二的幂。例如,(所有二进制数字),
1000>>3=0001
(将“1000”向左移动3次)。二进制中的1000是8,因此,
1000>>3
=10002/23=1

但是,您希望代码的二进制左移

int g = testBitmap.pixels[i] << 16 & 0xFF;
int b = testBitmap.pixels[i+1] << 8 & 0xFF;
int r = testBitmap.pixels[i+2] & 0xFF;
int pixel = (r | g) | b;