Java 遇到坐标越界异常-将图片复制到网格格式

Java 遇到坐标越界异常-将图片复制到网格格式,java,exception,pixels,Java,Exception,Pixels,线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常: 坐标出界在 sun.awt.image.IntegerInterleavedRaster.getDataElements(未知 源代码)位于java.awt.image.BufferedImage.getRGB(未知 来源)at bookie.SimplePicture.getBasicPixel(SimplePicture.java:303) bookie.Pixel.getAlpha(

线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常: 坐标出界
在 sun.awt.image.IntegerInterleavedRaster.getDataElements(未知 源代码)
位于java.awt.image.BufferedImage.getRGB(未知 来源)
at bookie.SimplePicture.getBasicPixel(SimplePicture.java:303)
bookie.Pixel.getAlpha(Pixel.java:73)
at bookie.Pixel.setColor(Pixel.java:213)
at com.picture.picture.CopyPictureTo(picture.java:189)
com.picture.picture.makeGrid(picture.java:170)
com.picture.picture.main(picture.java:103)


当你得到一个异常并需要帮助时,总是粘贴该异常的完整堆栈跟踪;如果这就是堆栈跟踪的意思。对不起,我是个新手。
public static void main(String[] args) 
{     
   Picture sourcePicture = new Picture("C:\\caterpillar.jpg");

   int grid_size = 2;   

   Picture GridPic = makeGrid(sourcePicture, grid_size);

   GridPic.show();
}

public static Picture makeGrid(Picture sourcePicture, int grid_size){
  Picture gridpic = null;
  int picheight = sourcePicture.getHeight();
  int picwidth = sourcePicture.getWidth();
  Picture calculatedPic = new Picture(picwidth*grid_size, picheight*grid_size);
  int xStart =0, yStart = 0;


  for(int i = 0; i < grid_size; i ++){
      for(int j = 0; j < grid_size; j ++){
          calculatedPic = CopyPictureTo(sourcePicture, calculatedPic, xStart, yStart);
          xStart = xStart + picwidth;
      }
      xStart = 0;
      yStart = grid_size * picheight;
  }

  return calculatedPic;
}

public static Picture CopyPictureTo(Picture sourcePicture, Picture calculatedPicture, int xStart, int yStart){
  Pixel sourcePixel = null;
  Pixel targetPixel = null;

  for(int sourceX =0, targetX = xStart; sourceX < sourcePicture.getWidth(); sourceX++, targetX++){
      for(int sourceY =0, targetY = yStart; sourceY < sourcePicture.getHeight(); sourceX++, targetY++){
          sourcePixel = sourcePicture.getPixel(sourceX, sourceY);
          targetPixel = calculatedPicture.getPixel(targetX, targetY);
          targetPixel.setColor(sourcePixel.getColor());
      }
  }
  return calculatedPicture;
}
 targetPixel.setColor(sourcePixel.getColor());