Java - Récupérer un tableau de pixels à partir d'une image
Lorsque vous travaillez avec des images, il est souvent nécessaire d'accéder à leurs données de pixels. Cet article explore les techniques permettant d'obtenir efficacement un tableau bidimensionnel de valeurs de pixels à partir d'une BufferedImage.
Utilisation de la méthode getRGB()
Une approche courante consiste à utiliser la méthode getRGB () méthode fournie par BufferedImage. Cette méthode combine les valeurs alpha, rouge, verte et bleue en un seul entier et le renvoie. Bien que pratique, cette méthode peut s'avérer inefficace, en particulier pour les grandes images, car elle implique des manipulations de plusieurs octets et une fusion d'entiers.
Accès direct au tableau de pixels
Une approche alternative implique accéder directement au tableau de pixels en utilisant les méthodes getRaster() et getDataBuffer() de BufferedImage. Cela permet un accès direct aux données de pixels, ce qui améliore les performances pour les grandes images. L'inconvénient de cette technique est la nécessité d'un calcul d'index manuel pour accéder à des pixels spécifiques.
Comparaison des performances
Pour illustrer la différence de performances, une classe de tests de performances a été créée qui utilise les deux approches. Les tests sont réalisés sur une image de 12 000 x 12 000 pixels. Les résultats sont frappants :
convertTo2DUsingGetRGB :
convertTo2DWithoutUsingGetRGB :
Conclusion
Pour les petites images, la méthode getRGB() peut être suffisante. Cependant, pour les images volumineuses, l’accès direct au réseau de pixels offre un avantage significatif en termes de performances. En optant pour cette approche, vous pouvez réduire considérablement les temps de traitement et améliorer l'efficacité de vos opérations liées aux pixels.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!