Bonjour,

J'ai une méthode qui me permet d'appliquer une inversion sur une image. Je travaille avec des images en noir et blanc (TYPE_BYTE_BINARY) et des images en couleur (TYPE_INT_RGB). Le résultat est ok pour les images couleurs, mais pas pour les noir et blanc:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
protected BufferedImage doViewControlInvert()
    {
        BufferedImage imageInverted = new BufferedImage(this.currentBufferedImage.getWidth(), this.currentBufferedImage.getHeight(), BufferedImage.TYPE_INT_RGB);
        byte[] inverser = new byte[256];
        for (int i=0; i<256; i++) inverser[i] = (byte) (255-i);
        ByteLookupTable table = new ByteLookupTable(0, inverser);
        LookupOp inversion = new LookupOp(table, null);
        inversion.filter(this.currentBufferedImage, imageInverted);
 
        return imageInverted;
    }
J'obtiens l'erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
java.lang.IllegalArgumentException: LookupOp cannot be performed on an indexed image
Je comprends qu'il faudrait d'abord effectuer une conversion sur les images noir et blanc avant de les donner à la méthode d'inversion. Quelqu'un sait comment faire ça ou a une autre solution svp?

Merci