왜이 메서드는 인덱스를 벗어난 인덱스를 throw합니까? 데이터에서 이미지를 만들려고 노력하며 자신을 생성하고 이것이 효과가있을 것으로 기대했습니다.float 배열에서 이미지 만들기, 범위를 벗어난 인덱스
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)
스레드를 사용합니까? 그런 다음 가능성이있을 수 있습니다, 당신은 데이터 배열을 변경합니다. –
아니, 나는 singlethreaded 두려워, 테스트 케이스 그냥 임의의 데이터 배열을 생성하고 이미지를 만들려고합니다. – arynaq
부동 소수점을 INT_ARGB 타입 버퍼에 저장하는 이유를 묻는 것은 무식한 질문입니까? – usr2564301