2010-12-03 27 views
0

J'ai très peu d'expérience avec Java IO et les images, et je n'ai pas réussi à convertir une image aérienne enregistrée en tant que tableau d'octets dans un BufferedImage.Problème de conversion d'octets à partir d'une requête Bing Map en une image tamponnée

Voici mon code:

 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); 

La plupart de ce code est emprunté à http://www.exampledepot.com/egs/java.awt.image/Mandelbrot2.html.

Ce code génère l'exception suivante

java.awt.image.RasterFormatException: tableau de données trop petit (devrait être 122499)

la longueur réelle du tableau de données est 52341.

Le les dimensions sont 350px X 350px

Répondre

1

Voici la ligne qui vous tue:

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

L'exemple que vous montre fait width * height au lieu de scaledImage.getImage(). Length. Dans le modèle que vous avez choisi, vous avez besoin d'un octet par pixel, qui est 350x350 ou 122500.

+0

Salut, donc si je change la valeur du second argument en largeur * hauteur, je reçois le même Exception – Ceniza

+0

ce qui est la largeur et hauteur dans ce cas? Sont-ils tous deux 350 –