2012-02-12 69 views
1

我讀爲.jpg圖像和accesing像素爲:我如何創建圖像從像素存儲爲r,g,b每個佔據陣列中的不同位置?

if (type == BufferedImage.TYPE_3BYTE_BGR) { 
    System.out.println("type.3byte.bgr"); 
    byte[] pixels = (byte[]) sourceImage.getData().getDataElements(0, 0, w, h, null); 
} 

//處理該數組稱爲像素並顯示所得到的圖像 //第一我將其轉換爲整數

int offseet=0; 
    int[] data=new int[width*height*3]; 
    for (i = 0; i < data.length; i++) { 
     data[i] = pixels[offset++] & 0xff; 
    } 

//然後處理這個數組。 現在我不處理它。現在,當我創建緩衝區 //圖像數據數組並顯示它時,顯示的圖像是不一樣的。 //我使用的代碼是

writeEdges(data); 


private BufferedImage edgesImage; 
private void writeEdges(int arb[]) { 
    if (edgesImage == null) { 
    edgesImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); 
    } 

    edgesImage.getWritableTile(0, 0).setDataElements(0, 0, width,height, arb); 
} 

//用於penguins.jpg圖像(在視窗7中的樣品的照片提供)!

image

輸出我得到的是

image

+1

您在初始化 – 2012-02-12 07:36:37

+0

爲了更好地幫助更快 「偏移」 爲 「offseet」,張貼[SSCCE(http://sscce.org/)。 (雖然第二個圖像相當時髦 - 幾乎是藝術);) – 2012-02-12 07:48:49

回答

0

我不知道如何你的代碼運行,因爲它不會編譯爲jcomeau_ictx指出。問題是您使用不同的圖像類型進行讀寫。 這裏是一個代碼片段,它將生成與輸入相同的圖像。

public static void main(String[] args) { 

     BufferedImage sourceImage = null; 
     try { 
      sourceImage = ImageIO.read(new File("IScSH.jpg")); 
     } catch (IOException e) { 
     } 

     int type = sourceImage.getType(); 
     int w = sourceImage.getWidth(); 
     int h = sourceImage.getHeight(); 
     byte[] pixels = null; 
     if (type == BufferedImage.TYPE_3BYTE_BGR) { 
      System.out.println("type.3byte.bgr"); 
      pixels = (byte[]) sourceImage.getData().getDataElements(0, 0, w, h, null); 
     } 
     try { 
      BufferedImage edgesImage = new BufferedImage(w, h, BufferedImage.TYPE_3BYTE_BGR); 
      edgesImage.getWritableTile(0, 0).setDataElements(0, 0, w, h, pixels); 
      ImageIO.write(edgesImage, "jpg", new File("nvRhP.jpg")); 
     } catch (IOException e) { 
     } 
    } 
+0

@ Rics:Thankyou先生,但問題是我將字節數組轉換爲整型數組,因爲我需要對像素做一些處理。所以我的新整數數組顯示上面的藍色圖像。在嘗試塊代碼類型不能是TYPE_3BYTE_BGR整數權利? – Saurabh 2012-02-12 09:28:42

+0

您能否告訴我爲什麼原始圖像和新構建的圖像之間存在尺寸差異? – Saurabh 2012-02-12 16:41:58

+0

還有一個TYPE_INT_BGR類型。圖像大小可能取決於幾個方面,例如壓縮率。如果圖像看起來你想要什麼,那麼我認爲你不必關心它。 – rics 2012-02-12 18:43:29

相關問題