Flouter une image Java

Résolu
Étienne9 Messages postés 1022 Date d'inscription   Statut Membre Dernière intervention   -  
 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 !



A voir également:

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 ;-)
0
jufloju
 
j'utilise ce code pour assombrir une image personnelement ^^
0
Étienne9 Messages postés 1022 Date d'inscription   Statut Membre Dernière intervention   49
 
Merci beaucoup, ça fonctionne !
Merci infiniment
0