的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'没有初始化,你刚才宣布它。 –