biboo_ \o/ | Bonjour à tous,
pour faire bref, je dois récupérer la couleur de chaque pixel (représenté par un entier) et la placer dans un tableau, tout ceci depuis
une image au format BMP. A noter que la valeur de chaque pixel doit se situer entre 0 et 255 (ou -127 et 128).
Voici la méthode:
Code :
- public static int[] getPixelTable(String absolutePathFileName) {
- try {
- byte tabBmp[];
- int rgbs[] = null;
- // création d'un flux
- FileInputStream fin = new FileInputStream(absolutePathFileName);
- tabBmp = new byte[fin.available()];
- fin.read(tabBmp);
- if (tabBmp.length >0 ) {
- // la fonction byteArrayToInt(int offset, int nbyte) récupère un entier "de offset à offset+nbyte"; elle marche parfaitement
- int intLargeur = byteArrayToInt(tabBmp,18,4);
- int intHauteur = byteArrayToInt(tabBmp,22,4);
- int intOffsetPixel = byteArrayToInt(tabBmp,10,4);
- ColorModel monoChromeModel = new IndexColorModel(1,2,
- new byte[] {(byte)0, (byte)255},
- new byte[] {(byte)0, (byte)255},
- new byte[] {(byte)0, (byte)255});
- ByteBuffer BufferTabPixel = ByteBuffer.allocate (tabBmp.length-intOffsetPixel);
- byte[] tabPixel = BufferTabPixel.array();
- DataBuffer db = new DataBufferByte(tabPixel,tabPixel.length);
- WritableRaster wr = Raster.createPackedRaster(db,intLargeur,intHauteur,1,null);
- //creation du BufferedImage
- BufferedImage afpImage = new BufferedImage(monoChromeModel,wr,false,null);
- int w = afpImage.getWidth();
- int h = afpImage.getHeight();
- rgbs = new int[w*h]; /** on crée l'espace nécessaire */
- //copie de chaque piskel du bufferedImage (afpImage) vers un tableau d'entiers (rgbs)
- afpImage.getRGB(0,0,w,h,rgbs,0,w);
- }
- fin.close();
- return rgbs;
- } catch(IOException ie) {
- System.out.println("Erreur: "+ie);
- return null;
- }
- }
|
Le problème, c'est que le tableau contient des valeurs trop grandes :
indice : 3597 main : -16777216
indice : 3598 main : -16777216
indice : 3599 main : -16777216 |
Quel est le problème, mais surtout quel y-a-t-il un autre moyen de récupérer toutes les valeurs d'une image BMP dans un tableau?
Merci d'avance pour vos conseils/critiques/suggestions. |