具有不同RGB值的java缓冲图像颜色op

具有不同RGB值的java缓冲图像颜色op,java,colors,bufferedimage,Java,Colors,Bufferedimage,我有一个以灰度绘制的缓冲图像,我想将其转换为颜色,其中颜色映射到灰度中的某些范围。例如,0-100之间的所有灰色映射为红色,100-255映射为绿色。看起来缓冲图像查找操作是实现这一点的方法,但我不完全确定如何做到这一点。例如,如果灰度图像的RGB为(50,50,50),我希望将该像素转换为(255,0,0),而不是(255255)。查找op是正确的方法吗 如果灰度图像的RGB为(50,50,50),我想将该像素转换为(255,0,0) 试试这个 try { BufferedImage

我有一个以灰度绘制的缓冲图像,我想将其转换为颜色,其中颜色映射到灰度中的某些范围。例如,0-100之间的所有灰色映射为红色,100-255映射为绿色。看起来缓冲图像查找操作是实现这一点的方法,但我不完全确定如何做到这一点。例如,如果灰度图像的RGB为(50,50,50),我希望将该像素转换为(255,0,0),而不是(255255)。查找op是正确的方法吗

如果灰度图像的RGB为(50,50,50),我想将该像素转换为(255,0,0)

试试这个

try {
    BufferedImage image = ImageIO.read(new File("resources/Tulips.jpg"));
    BufferedImage newImage = new BufferedImage(image.getWidth(), image.getHeight(),
            BufferedImage.TYPE_INT_ARGB);

    int newColorRGB = new Color(255, 0, 0).getRGB();
    for (int x = 0; x < image.getWidth(); x++) {
        for (int y = 0; y < image.getHeight(); y++) {
            Color color = new Color(image.getRGB(x, y));
            int red = color.getRed();
            int blue = color.getBlue();
            int green = color.getGreen();

            if (red == 50 && blue == 50 && green == 50) {
                newImage.setRGB(x, y, newColorRGB);
            } else {
                newImage.setRGB(x, y, color.getRGB());
            }
        }
    }
    ImageIO.write(newImage, "png", new File("resources/Tulips1.png"));
} catch (IOException e) {
    e.printStackTrace();
    System.out.println("Sorry, I cannot find that file.");
}
试试看{
buffereImage=ImageIO.read(新文件(“resources/Tulips.jpg”);
BuffereImage newImage=新的BuffereImage(image.getWidth(),image.getHeight(),
BuffereImage.TYPE_INT_ARGB);
int newColorRGB=新颜色(255,0,0).getRGB();
对于(int x=0;x

注意:根据您的要求更改图像类型。

查找操作更适合于每种颜色分别映射到另一种颜色的情况。因此,根据描述,这听起来像是Braj的答案中的方法,在这里可能更合适。你可以用
if(red==50…)
替换查询
if(red==50…)
,谢谢,我认为这会奏效。我不确定是否有一种“暴力”更少的方法可以做到这一点。有关更多信息,请看。@Hovercraft Full Eels发布了一些使用
RGBImageFilter
的示例代码。