的Class BufferedImage
提供getRGB()
方法的兩個變體:
首先一個,int getRGB(int x, int y)
作爲返回類型說,這將返回一個單個像素。
第二個:
int[] getRGB(int startX, int startY, int w, int h,
int[] rgbArray, int offset, int scansize)
哪個返回默認的RGB顏色模型整數像素的陣列。但是,如果你通過rgbArray
是null
此功能將創建它的內部新rgbArray
並返回它:
public int[] getRGB(int startX, int startY, int w, int h,
int[] rgbArray, int offset, int scansize) {
// other code
if (rgbArray == null) {
rgbArray = new int[offset+h*scansize];
}
// other code
return rgbArray;
}
但同樣,你將不得不使用它之前返回數組分配給pixels
。在getRGB
函數內部創建的數組在傳遞給此函數之前,不能更改pixels
數組的參考號null
。
考慮在第二個函數上使用getPixel(x, y)
函數,因爲與第二個函數不同,getPixel(x, y)
不會拋棄Java2D所做的優化。討論這個問題超出了這個問題的範圍。
參考:
- BufferedImage.getRGB
'pixels'沒有初始化,你剛纔宣佈它。 –