Проблема преобразования байтов из запроса карты Bing в BufferedImage - PullRequest
0 голосов
/ 04 декабря 2010

У меня очень мало опыта работы с 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

1 Ответ

1 голос
/ 04 декабря 2010

Вот строка, которая убивает вас:

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

В примере, который вы показываете, вместо * scaledImage.getImage (). Length используется width * height. В выбранной вами модели вам необходим байт на пиксель, который составляет 350x350 или 122500.

...