Java 如何从图像中删除某个RGB值?
我被这个问题困扰了一段时间。我的想法或我希望能够做的是获取BuffereImage并检查BuffereImage是否包含某个RGB值。如果它给出了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
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对象中?一旦检查完成,你就可以做你正在确认的事情。