Comment extraire un tableau de pixels d'une image
En Java, l'obtention de données de pixels à partir d'une BufferedImage sous la forme d'un tableau int[][] permet accès direct à des pixels spécifiques. Voici quelques façons d'y parvenir :
Utilisation de la méthode getRGB() de BufferedImage
Cette méthode combine les valeurs alpha, rouge, verte et bleue en un seul int et le renvoie. Pour extraire les composants de couleur individuels, vous devez récupérer le masque de couleur et décaler les valeurs en conséquence. Cette approche est relativement simple mais pas la plus efficace.
Accès direct au tableau de pixels
En utilisant le code suivant, vous pouvez accéder directement au tableau de pixels sous forme d'octet array :
byte[] pixels = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData();
Cette méthode est nettement plus rapide que la méthode getRGB(), en particulier pour les grands images.
Comparaison des performances
Pour démontrer la différence de performances, un test a été effectué en utilisant une image de 12 000 x 12 000 pixels. Le tableau suivant compare les temps d'exécution des deux méthodes :
Method | Average Time |
---|---|
getRGB() | 16 seconds |
Direct Access | 1.5 seconds |
Conclusion
Accéder directement au tableau de pixels à l'aide de la classe DataBufferByte est l'approche recommandée pour un pixel efficace manipulation. Par rapport à la méthode getRGB(), elle offre des avantages significatifs en termes de performances, notamment lorsqu'il s'agit de grandes images.
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!