Java 遇到坐标越界异常-将图片复制到网格格式
线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常: 坐标出界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(
在 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());