2011-07-30 45 views
4

我對圖像處理非常陌生。我有一個PNG圖像(使用ImageIO.read()讀取),當我呼叫getType()時,將產生BufferedImage.TYPE_CUSTOM如何轉換顏色模型

BufferedImage bi = ImageIO.read(new URL("file:/C:/samp1.png")); 
int type =bi.getType(); //TYPE_CUSTOM for samp1.png 

現在我想將其轉換爲以下型號之一:

  1. TYPE_USHORT_GRAY
  2. TYPE_3BYTE_BGR
  3. TYPE_BYTE_GRAY
  4. TYPE_INT_RGB
  5. TYPE_INT_ARGB

需要完成以上操作才能使用僅識別上述類型的庫進一步處理圖像。

如何將TYPE_CUSTOM顏色模型轉換爲其他模型?

任何幫助/指針將不勝感激。 如果沒有任何現有的庫來做到這一點,任何鏈接/張貼到步驟/算法會很好。

+0

我仍然在尋找一個在你的問題中標記,對不起,你可以請你改說你的問題謝謝 – doNotCheckMyBlog

+0

@Krio增加了清晰度的問題。 – Neville

回答

0

你試過了嗎?

BufferedImage rgbImg = new BufferedImage(bi.getWidth(), bi.getHeight(), BufferedImage.TYPE_INT_RGB); 
+0

哇,這很簡單!謝謝。 – Neville

+5

這是不是隻是創建一個新的空白圖像?您和Eric似乎選擇了相同的方法,即使看起來只寫了第一行,也可以使用圖形對象重新繪製圖像。我相信有一種更快的方法,可能將其埋在AWT文件中,或者你需要實現的東西,轉換由getData()返回的WritableRaster。 (也就是說,除非drawImage採用這些捷徑,但我懷疑這一點。)任何想法? –

10

試試這個: 「?」

public static BufferedImage convert(BufferedImage src, int bufImgType) { 
    BufferedImage img= new BufferedImage(src.getWidth(), src.getHeight(), bufImgType); 
    Graphics2D g2d= img.createGraphics(); 
    g2d.drawImage(src, 0, 0, null); 
    g2d.dispose(); 
    return img; 
} 
+1

此答案最好,標記爲可接受的答案只會創建一個空白圖片。您仍然需要填寫數據。 – 2016-10-08 00:13:08