开发者

Problem converting bytes from a Bing Map request into a BufferedImage

I have very little experience with Java IO and images, and I've been unsuccessful at converting an aerial image saved as a byte array into a BufferedImage.

Here's my code:

        int width = scaledImage.getWidth();
    int height = scaledImage.getHeight();
 开发者_StackOverflow中文版   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); 

Most of this code is borrowed from http://www.exampledepot.com/egs/java.awt.image/Mandelbrot2.html.

This code throws the following exception

java.awt.image.RasterFormatException: Data array too small (should be 122499 )

the actual length of the data array is 52341.

The dimensions are 350px X 350px


Here is the line that is killing you:

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

The example you show does width * height instead of scaledImage.getImage().length. In the model you've chosen, you need a byte per pixel, which is 350x350 or 122500.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜