Bonjour,
Savez-vous s'il y a un moyen d'accèder au pixels d'une BufferedImage sans qu'il n'y ait de copie de données quelque part.
J'aurais besoin d'optimiser certains traitements, ne travaillant que sur des images de type 32 bits, ARGB ou RGB, je me demandais s'il n'y avait pas un moyen d'optimiser les accès.
En effet, en passant par des lecteurs blocs par blocs (exemple : )
La récuperation des données mettent bien 1sec (en cumulée ligne par ligne) sur une photo de taille 4200*3000.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 static public int[] getRGB(BufferedImage image, int x, int y, int width, int height, int pixels[]) { int type = image.getType(); //dans le cas RGB ou ARGB, on peut récuperer directement les bonnes // valeurs du Raster if (type == BufferedImage.TYPE_INT_RGB || type == BufferedImage.TYPE_INT_ARGB) return (int[]) (int[]) image.getRaster().getDataElements(x, y, width, height, pixels); else return image.getRGB(x, y, width, height, pixels, 0, width); }
Du coup, mon opérateur de traitement met désormais moins de temps que les copies.
Partager