0

我对 Java IO 和图像的经验很少,而且我在将保存为字节数组的航拍图像转换为 BufferedImage 方面一直没有成功。

这是我的代码:

        int width = scaledImage.getWidth();
    int height = scaledImage.getHeight();
    DataBuffer buffer = new DataBufferByte(scaledImage.getImage(), scaledImage.getImage().length, 0);
    SampleModel sampleModel = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, width, height, new int[]{(byte)0xf});
    WritableRaster raster = Raster.createWritableRaster(sampleModel, buffer, null);
    ColorModel colorModel = imageManager.generateColorModel();
    BufferedImage image = new BufferedImage(colorModel, raster, false, null); 

大部分代码是从http://www.exampledepot.com/egs/java.awt.image/Mandelbrot2.html借来的。

此代码引发以下异常

java.awt.image.RasterFormatException:数据数组太小(应该是 122499 )

数据数组的实际长度为 52341。

尺寸为 350 像素 X 350 像素

4

1 回答 1

1

这是杀死您的行:

DataBuffer buffer = new DataBufferByte(scaledImage.getImage(), scaledImage.getImage().length, 0);

您展示的示例width * height代替了 scaledImage.getImage().length。在您选择的模型中,您需要每像素一个字节,即 350x350 或 122500。

于 2010-12-03T21:33:35.663 回答