2010-12-03 11 views
0

Java IOと画像に関する経験はほとんどありません。バイト配列として保存された空中画像をBufferedImageに変換するのに失敗しました。このコードのほとんどは、http://www.exampledepot.com/egs/java.awt.image/Mandelbrot2.htmlからBing Mapリクエストから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); 

を借りている:

は、ここに私のコードです。

このコードは、次の例外をスロー

java.awt.image.RasterFormatException:データアレイが小さすぎる(122499であるべきである)

データアレイの実際の長さは、52341.

あります寸法は、ここでは350px X 350px

答えて

1

ているあなたを殺している行です。

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

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

+0

こんにちは、2番目の引数の値をwidth * heightに変更すると、同じ例外が発生します – Ceniza

+0

widthとwidthは何ですか?その場合の高さですか?彼らはどちらも350歳ですか? –

関連する問題