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 です。

寸法は 350px X 350px です

4

1 に答える 1

1

これがあなたを殺している行です:

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

あなたが示す例はwidth * height、scaledImage.getImage().length の代わりに行います。選択したモデルでは、1 ピクセルあたり 1 バイト、つまり 350x350 または 122500 が必要です。

于 2010-12-03T21:33:35.663 に答える