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