0
我正在嘗試處理圖像文件並將其作爲Image對象返回,但是當我調用公共靜態BufferedImage時,出現ArrayIndexOutOfBoundsException異常getImageFromArray(int [ ]數據,int列,int行)。在Java中創建緩衝圖像時數組索引超出界限
我已經存儲到一個數組以下像素的顏色命名爲「數據」:
[255,6,65,78,99,100,25,0,45,66,88,190,88,76,50]
我分析了這一點,從一個看起來像這樣的文本文件:我想
255, 6, 65, 78, 99
100, 25, 0, 45, 66
88, 190, 88, 76, 50
通過使用BufferedImage從這個數據生成一個圖像,目前我正在用這個打磚牆。根據上面的表結構將列和行傳遞給它。
public static BufferedImage getImageFromArray(int[] data, int columns, int rows) {
BufferedImage image = new BufferedImage(columns, rows, BufferedImage.TYPE_INT_RGB);
WritableRaster raster = (WritableRaster) image.getData();
raster.setPixels(0,0, columns, rows, data);
image.setData(raster);
return image;
}
當我點擊raster.setPixels調用時,出現OOB異常。這是否需要一個不同的數組或值我缺少?
一種AIOOBException將由[#的WritableRaster的setPixels](HTTP拋出:// docs.oracle.com/javase/7/docs/api/java/awt/image/WritableRaster.html#setPixels%28int,%20int,%20int,%20int,%20int[]%29)if if「如果座標是不在界限內,或者iArray太小而無法保存輸入。「你可以消除第一個原因,因此推斷'data'數組的大小比'columns * rows'小。我建議調試你的值。 – Vulcan
在WriteableRaster中,我確實在光柵內看到了maxX = 5和maxY = 3,我不清楚如何將此數組設置爲合適的大小。 – 3ck
爲什麼downvote,我沒有得到它?它是一個有效的問題,寫得很好。 – Siddharth