2013-05-02 51 views
1

如何圖像的顏色使用Java獲取使用Java

以獲取圖像icon.png的顏色其實我對我無線本地環路使用多文件傳輸來發送圖像一個servlet, 現在服務器應該回響應圖標文件的顏色, 這裏圖像文件具有單一顏色;

+0

你是什麼意思的「單一顏色」的圖像文件?除非它是一個像素的圖像,否則有多種顏色。 – Vulcan 2013-05-02 21:30:35

+0

@Vulcan單色表示所有像素都具有相同的顏色。 – 2013-05-02 21:32:22

回答

0

您可以循環BufferedImage(兩個循環 - 一個從0到寬度,一個從0到高度),並獲得調用getRgb(x,y)。然後計算每個不同的值。您可以使用一個地圖(鍵=顏色,值=發生次數)。請注意,這會給你計算圖像中每種顏色的頻率。

2

假設你已經在路徑的圖像文件:

Color getImageColor(File imagePath) { 
    BufferedImage image = ImageIO.read(imagePath); 
    int color = image.getRGB(0, 0); 
    for (int r = 0; r < image.getHeight(); r += 1) { 
     for (int c = 0; c < image.getWidth(); c += 1) { 
      if (image.getRGB(c, r) != color) { 
       throw new IllegalArgumentException("Image: " + imagePath + " is not a solid color."); 
      } 
     } 
    } 

    return new Color(color); 
} 

此代碼假定圖像確實只有一個顏色,僅拉動第一像素。

循環是爲了確保整個圖像是一種顏色。當然,處理這種情況有很多種方法。

+3

+1,但爲什麼要提取RGB來重建顏色,當你可以簡單地做'返回新顏色(image.getRGB(0,0))'? – Vulcan 2013-05-02 21:35:23

+1

@Vulcan,很好的電話。 – Brigham 2013-05-02 21:42:00

+0

@ShamsUdDin一種選擇是在圖像上循環並在圖像不是純色時拋出異常。我已經添加了一些代碼來做這個檢查。其他選項是平均顏色,或跟蹤最常見的顏色並挑選最常用的顏色。 – Brigham 2013-05-02 21:46:24