Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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 如何从图像中删除某个RGB值?_Java - Fatal编程技术网

Java 如何从图像中删除某个RGB值?

Java 如何从图像中删除某个RGB值?,java,Java,我被这个问题困扰了一段时间。我的想法或我希望能够做的是获取BuffereImage并检查BuffereImage是否包含某个RGB值。如果它给出了RGB值,那么我想从图像中完全删除该颜色并使其透明 以下是我在代码中的想法: public static BufferedImage grabSubImage(BufferedImage image) { Color backgroundToRemove = new Color(253, 28, 253); int width = i

我被这个问题困扰了一段时间。我的想法或我希望能够做的是获取BuffereImage并检查BuffereImage是否包含某个RGB值。如果它给出了RGB值,那么我想从图像中完全删除该颜色并使其透明

以下是我在代码中的想法:

public static BufferedImage grabSubImage(BufferedImage image) { 
    Color backgroundToRemove = new Color(253, 28, 253);
    int width = image.getWidth();
    int height = image.getHeight(); 

    for (int imageWidth = 0; imageWidth < width; imageWidth++) { 
         for (int imageHeight = 0; imageHeight < height; imageHeight++) {
              int pixel = image.getRBG(imageWidth, imageHeight); 
              if (pixel == backgroundToRemove) image.removeBackgroundColor(); //Not an Actual Method           
         }
   }
   return image; 
}
这是我的照片:

所讨论的图像为:4,0或因为每个框的宽度为16 px 16*4,0


提前谢谢你的帮助!非常感谢

你真正的问题是什么?你似乎有一个很好的设置。不要把回报放在循环中。只需在末尾使用一个返回,这样,如果要再次使用映像,就可以防止任何可能的NullPointerException。除此之外,这种方法看起来很可靠。也许可以添加一种可能性,将要删除的颜色作为参数传递,这样你就可以用一种方法删除不同的背景。@JohannisK是的,这是有道理的,但是没有一种方法可以让你删除背景,我不知道你如何才能使用这种方法。此外,不能将int值与颜色进行比较。这也是错误的。只需将颜色设置为透明白色argb0,0,0,0,因为PNG和Java都允许透明度值,所以像素变得不可见。应该有一个名为Image.setRGB或类似的方法。@GiantTree好的,这很有帮助,但是,我缺少的是如何准确地检查所述颜色是否包含在BuffereImage对象中?一旦检查完成,你就可以做你正在确认的事情。