Besoin de moyen plus Rapide pour obtenir la valeur RVB de chaque Pixel d'une Image Tamponnée

Quel est le moyen le plus rapide pour obtenir la valeur RVB de chaque pixel d'une BufferedImage?

Droit maintenant j'obtiens les valeurs RVB à l'aide de deux for boucle comme indiqué dans le code ci-dessous, mais il a fallu trop longtemps pour obtenir ces valeurs, comme la boucle imbriquée gère un total de 479999 fois pour mon image. Si j'utilise une image 16 bits de ce nombre serait encore plus élevé!

J'ai besoin d'un moyen plus rapide pour obtenir les valeurs des pixels.

Voici le code que j'suis en train d'essayer de travailler avec:

BufferedImage bi=ImageIO.read(new File("C:\\images\\Sunset.jpg"));

int countloop=0;  

for (int x = 0; x <bi.getWidth(); x++) {
    for (int y = 0; y < bi.getHeight(); y++) {
        Color c = new Color(bi.getRGB(x, y));
        System.out.println("red=="+c.getRed()+" green=="+c.getGreen()+"    blue=="+c.getBlue()+"  countloop="+countloop++);                                                                                                                                                  
    }
}
it can even rise when i will use 16 bit image - Pourquoi le nombre d'itérations dépend du nombre de bits par pixel? Et ce qui est le cas d'utilisation pour qui? Notez que la création d' Color objets ainsi que l'impression à la console prend un certain temps. Si vous voulez accéder à toutes 479999 pixels vous ne pouvez pas vous débarrasser d'une boucle (vous pouvez les fusionner pour une, mais qui ne devrait pas faire grande différence).
La production ralentit l'ensemble de la boucle vers le bas. À essayer sans.
Il pourrait aller beaucoup plus vite sans la println
Regarde ici stackoverflow.com/questions/4348613/...
Sortir les System.out.println() appels fera beaucoup plus rapidement. Vous pourriez peut-être définir c à l'extérieur de la boucle, et même d'éviter l'instanciation d'un Color si vous en avait besoin, mais ce n'est probablement pas nécessaire.

OriginalL'auteur Jony | 2012-04-10