Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的ColorInvert图像过滤器是如何工作的?_Java_Filter - Fatal编程技术网

Java中的ColorInvert图像过滤器是如何工作的?

Java中的ColorInvert图像过滤器是如何工作的?,java,filter,Java,Filter,我试着写作业,我的代码也能正常工作,问题是我不明白为什么。 我必须用Java创建一个图像过滤器,它可以反转颜色。 你能用简单的话向我解释一下下面的代码是做什么的吗?更具体地说,这一行: int neu = (p) ^ 0x00FFFFFF; 为什么我需要“^” 。。。。。 还有其他的,这样你就能明白我想做什么 public void filterInvert(){ for(int x = 1; x < w; x++){ for(int y = 1; y<h

我试着写作业,我的代码也能正常工作,问题是我不明白为什么。 我必须用Java创建一个图像过滤器,它可以反转颜色。 你能用简单的话向我解释一下下面的代码是做什么的吗?更具体地说,这一行:

   int neu = (p) ^ 0x00FFFFFF;
为什么我需要“^”

。。。。。 还有其他的,这样你就能明白我想做什么

   public void filterInvert(){
   for(int x = 1; x < w; x++){
    for(int y = 1; y<h; y++){
        int p = filteredImage.getRGB(x, y);
        int neu = (p) ^ 0x00FFFFFF;
        filteredImage.setRGB(x, y, neu); 
    }
}
}
public void filterivert(){
对于(int x=1;x对于(int y=1;yIT是位元异或运算符(更多关于运算符)),在OR之后得到0x0FFFFFF掩码(alpha,r,g,b),所以想象一下,作为最大值,在溢出之后,或者从最大值中返回剩下的东西。让我们举一个简单的例子:0xFF(255)。对于灰度图像来说,最大值就是你的最大值。例如,如果你有一个值为32的像素,你想得到该像素的负数,你可以从最大值(255)中减去32:223……(255-32)=32^255,但最酷的事情是逐位运算往往更快(CPU通常喜欢处理字节),但您也不必担心将颜色分成r、g、b通道,从255(最大值)中减去每个通道要得到负数并将通道放回十六进制表示形式…只需对最大值使用“^”,即可一次性在二进制级别处理此问题。如果计算机上有计算器应用程序,请切换到“程序员”视图,以便查看字节的变化。HTH