Obtenir la couleur de chaque pixel d'une image à l'aide de BufferedImages
Je suis en train d'essayer d'obtenir chaque couleur de chaque pixel d'une image.
Mon idée était la suivante:
int[] pixels;
BufferedImage image;
image = ImageIO.read(this.getClass.getResources("image.png");
pixels = ((DataBufferInt)image.getRaster.getDataBuffer).getData();
Est ce que le droit? Je ne peux même pas vérifier ce que les "pixels" tableau contient, parce que je reçois l'erreur suivante:
java.awt.image.DataBufferByte cannot be cast to java.awt.image.DataBufferInt
J'aimerais juste de recevoir la couleur de chaque pixel dans un tableau, comment puis-je y parvenir?
source d'informationauteur user2410644
Vous devez vous connecter pour publier un commentaire.
bien sûr, vous devez ajouter une boucle for pour tous les pixels
Le problème (également avec la réponse qui a été liée à partir de la première réponse), c'est que vous avez à peine jamais savoir quel type exact de votre tampon de l'image sera après l'avoir lu avec ImageIO. Elle pourrait contenir une
DataBufferByte
ou unDataBufferInt
. Vous pouvez le déduire, dans certains cas, parBufferedImage#getType()
mais dans le pire des cas, elle est de typeTYPE_CUSTOM
et puis vous ne pouvez revenir à certainsinstanceof
tests.Cependant, vous pouvez transformer votre image en une BufferedImage c'est la garantie d'avoir un
DataBufferInt
avec ARGB valeurs, à savoir avec quelque chose commeSinon, vous pouvez appeler
image.getRGB(x,y)
qui peut effectuer les conversions à la volée.BTW: Note que l'obtention de la mémoire tampon de données d'une BufferedImage peut dégrader la performance peinture, parce que l'image ne peut plus être "géré" et gardé en mémoire vidéo (VRAM) en interne.
pas
essayez ceci : Java - get réseau de pixels de l'image