getRaster 方法中出现数组越界异常

array out of bound exception occured in getRaster method

我正在读取文件并尝试获取图像的宽度和高度。但是,每当我调用此行

时,我都会遇到异常
inImg.getRaster().getPixels(0,0,width,height,pixels);

我遇到的异常是

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 307200
at sun.awt.image.ByteInterleavedRaster.getPixels(ByteInterleavedRaster.java:1014)
at sobel_java.main(sobel_java.java:22)

我的密码是

public class Sobel {   

 public static void main(String[] args) throws IOException{   

  int     i, j;   
  double  Gx[][], Gy[][], G[][];   
  FileInputStream inFile = new FileInputStream("lena.bmp");   
    BufferedImage inImg = ImageIO.read(inFile);   
    int width = inImg.getWidth();   
    int height = inImg.getHeight();   
    int[] pixels = new int[width * height];   
    int[][] output = new int[width][height];   
    inImg.getRaster().getPixels(0,0,width,height,pixels);  

}} 

感谢您的帮助。

getPixels() 方法将栅格的所有样本存储到输出数组中,每个像素不止一个。您可以使用 getNumBands() 获得每个像素的样本数。增加输出数组的长度:

int numBands = inImg.getRaster().getNumBands();
int[] pixels = new int[width * height * numBands];