2014-04-25 28 views
0

我有一個緩衝的圖像繪製在灰度,我想將其轉換爲顏色,其中顏色映射到灰色的一些範圍。例如,0-100之間的所有灰色映射到紅色,100-255映射到綠色。它看起來像緩衝圖像查找操作是這樣做的方式,但我不完全確定如何做到這一點。例如,如果灰度圖像的RGB是(50,50,50),我想將該像素轉換爲(255,0,0),而不是(255,255,255)。查找是否是正確的方法?java緩衝圖像顏色與RGB不同的值

+1

'LookupOp'更適用於*每個*顏色分別映射到* one *其他顏色的情況。所以根據描述,這聽起來像是一種方法,因爲Braj的答案在這裏可能更適合。你可以用'if(red <50 ...)'替換'if(red == 50 ...)'來真正處理顏色*範圍*。如果你的目的是爲圖像「着色」/「染色」(保持所有像素的亮度相同,但給它們一定的顏色),這可能會更復雜一點。如果是這樣的話,你應該在問題中指出。 – Marco13

回答

1

如果灰度圖像的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."); 
} 

注意:根據您的要求更改圖像類型。

+0

謝謝,我認爲這會做到這一點。不知道是否有一種「蠻力」的方式來做到這一點。 –

+0

欲瞭解更多信息,請參閱[如何將BufferedImage轉換爲某種顏色?](http://stackoverflow.com/questions/6853384/how-to-convert-a-bufferedimage-to-a-certain-colour )。 @Hovercraft Full Of Eels使用'RGBImageFilter'發佈了一些示例代碼。 – Braj