1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| public static void flou()
{
int l=0,h=0,somme=0;
// l et h largueur et hauteur de l'ancienne image.
BufferedImage im=null,imfl=null;
// Déclaration de deux images noires.
try {
im = ImageIO.read(new File("./image.bmp"));
}
catch (Exception e) {}
// Chargement de im, l'image de départ.
l = im.getWidth();
h = im.getHeight();
// l et h sont la largueur et la hauteur de l'image d'origine qui sera aussi la hauteur et la largueur de la nouvelle image.
imfl = new BufferedImage(l,h,BufferedImage.TYPE_INT_RGB);
// On crée la nouvelle image.
for (int j=1;j<h-1;j++) {
for (int i=1;i<l-1;i++) {
// On parcout l'image d'origine sans parcourir les côtés car on parcourera l'image d'origine avec une matrice de 3*3
int r = 0;
// Création de la composante rouge.
int g = 0;
// Création de la composante verte.
int b = 0;
// Création de la composante bleu.
for (int m=j-1;m<=j+1;m++) {
for (int k=i-1;k<=i+1;k++) {
// Ces deux boubles parcourent l'image d'origine avec une matrice de 3*3 dont les coordonnées i,j sont le centre.
Color c = new Color(im.getRGB(k,m));
// Création de c qui est une variable correspondant à la couleur du pixel aux coordonnées k,m.
r += c.getRed();
// On récupère le rouge et on l'ajoute à r.
g += c.getGreen();
// On récupère le vert et on l'ajoute à g.
b += c.getBlue();
// On récupère le bleu et on l'ajoute à b.
// À la fin de ces deux boucles, on a alors la somme les rouge, vert et bleu des pixels qui sont dans la matrice 3*3.
}
imfl.setRGB(i,j,new Color(r/9,g/9,b/9).getRGB());
// On insère aux coordonnées i,j la moyenne du rouge, vert et bleu.
}
}
}
try {
ImageIO.write(imfl,"bmp",new File("flou.bmp"));
}
catch (Exception e) {};
// Et on sauvegarde l'image.
} |
Partager