爲什麼此方法會將索引超出邊界錯誤?試圖從我自己生成的數據創建一個圖像,我預計這會工作。從浮點數組中創建圖像,索引超出範圍
private BufferedImage getImageFromFloatArray(float[] data, int w, int h) {
BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
System.out.println("Image pixel array size: "
+ ((DataBufferInt) img.getRaster().getDataBuffer())
.getData().length);
System.out.println("Datasize: " + data.length);
WritableRaster raster = img.getRaster();
raster.setPixels(0, 0, w, h, data);
return img;
}
堆棧跟蹤
Image pixel array size: 800000
Datasize: 800000
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 800000
at java.awt.image.SampleModel.setPixels(Unknown Source)
at java.awt.image.WritableRaster.setPixels(Unknown Source)
at image.PixelAraryToImageTest.getImageFromFloatArray(PixelAraryToImageTest.java:36)
Arent you using threads?那麼有可能發生這種可能性,那就是你改變了數據數組。 –
不,我擔心它是單線程的,測試用例只是生成一個隨機數據數組並嘗試創建一個圖像。 – arynaq
問你爲什麼要將浮點數存儲到INT_ARGB類型的緩衝區中是一個無知的問題? – usr2564301