2015-11-18 18 views
1

像素場的WritableRaster中的類,有一個方法:格式的WritableRaster

public void setPixels(int x, 
      int y, 
      int w, 
      int h, 
      int[] iArray) 

在iArray應該在哪裏存儲有關像素 對於像素信息:233(r)244(g)10(b),應該如何存儲在iArray?

會不會是iArray[0] = 233iArray[1] = 244iArray[2] = 10iArray[0] = [24424410]

回答

1

簡而言之,應該是iArray[0] = 233, iArray[1] = 244, iArray[2] = 10而不是iArray[0] = [24424410]

但是,數據量取決於WritableRaster的支持情況。考慮下面的例子,我們檢索兩個BufferedImagesWriteableRaster;一個包含RGB數據和其他ARGB數據。如果我們檢索像素值,我們可以看到RGB數據的長度爲3,ARGB數據的長度爲4。

代碼:

public static void main(String[] args) { 
    BufferedImage rgbImage = new BufferedImage(8, 8, 
      BufferedImage.TYPE_INT_RGB); 
    WritableRaster rgbRaster = rgbImage.getRaster(); 

    BufferedImage argbImage = new BufferedImage(8, 8, 
      BufferedImage.TYPE_INT_ARGB); 
    WritableRaster argbRaster = argbImage.getRaster(); 

    rgbImage.setRGB(0, 0, new Color(255, 125, 1, 16).getRGB()); 
    argbImage.setRGB(0, 0, new Color(255, 125, 1, 16).getRGB()); 

    int[] rgb = rgbRaster.getPixel(0, 0, (int[]) null); 
    int[] argb = argbRaster.getPixel(0, 0, (int[]) null); 
    System.out.print("rgb:"); 
    for (int i = 0; i < rgb.length; ++i) 
     System.out.print(" "+rgb[i]); 

    System.out.print("\nargb:"); 
    for (int i = 0; i < argb.length; ++i) 
     System.out.print(" "+argb[i]); 
} 

輸出:

rgb: 255 125 1 
argb: 255 125 1 16 
+0

非常感謝。我想輸出中的第一個255是用於Alpha值的?但爲什麼rgb的輸出是255 125 1而不是125 1? – SamW