Flouter une image Java

[Résolu/Fermé]
Signaler
Messages postés
1022
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
10 mai 2015
-
 jufloju -
Bonjour,

Décidément, j'ai fait une fonction Java pour flouter une image mais elle ne fonctionne pas.

public static void flou()
{
int l=0,h=0,i=0,j=0,k=0,m=0,somme=0;
BufferedImage im=null,imfl=null;
try {
im = ImageIO.read(new File("./image.bmp"));
}
catch (Exception e) {}
l = im.getWidth();
h = im.getHeight();
imfl = new BufferedImage(l,h,BufferedImage.TYPE_INT_RGB);
for (j=1;j<h-3;j=j+3) {
for (i=1;i<l-3;i=i+3) {
for(m=j-1;m<j+1;m++) {
for(k=i-1;k<i+1;k++) {
somme = somme + im.getRGB(k,m);
}
}
somme = somme/9;
for(m=j-1;m<j+1;m++) {
for(k=i-1;k<i+1;k++) {
imfl.setRGB(k,m,somme);
}
}
try {
ImageIO.write(imfl,"bmp",new File("flou.bmp"));
}
catch (Exception e) {};
}
}
}


Quelqu'un pourrait-il m'aider s'il vous plaît ?

Merci !



2 réponses

Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 860
Tu ne peux pas faire la moyenne des couleurs RGB, ce qu'il faut c'est faire la moyenne des composantes rouge, vert et bleu qui les composent.

De plus pour avoir une somme de 9 valeurs, tes boucles m et k doivent être <= pas <
Sans oublier de réinitialiser la somme à 0 à chaque fois.

Par contre, si j'approuve le voisinage de Moore pour calculer le flou je ne vois aucune raison d'appliquer cette valeur aux 9 cases et de sauter de 3 en 3, il serait mieux de traiter uniquement la case du milieu, sinon au lieu de flouter l'image pixel par pixel, tu va faire des gros carrés.

for (int j=1;j<h-1;j++)
for (int i=1;i<l-1;i++)
{
    int r = 0;
    int g = 0;
    int b = 0;
    
    for (int m=j-1;m<=j+1;m++)
    for (int k=i-1;k<=i+1;k++)
    {
        Color c = new Color(im.getRGB(k,m));
        r += c.getRed();
        g += c.getGreen();
        b += c.getBlue();
    }
    
    imfl.setRGB(i,j,new Color(r/9,g/9,b/9).getRGB());
}

PS. Je n'ai pas testé, mais ça va surement te faire avancer un peu ;-)
j'utilise ce code pour assombrir une image personnelement ^^
Messages postés
1022
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
10 mai 2015
49
Merci beaucoup, ça fonctionne !
Merci infiniment