IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ImageJ Java Discussion :

Flouter une image


Sujet :

ImageJ Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 34
    Par défaut Flouter une image
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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. #2
    Membre averti
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 34
    Par défaut
    J'ai réussi.

  3. #3
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par Étienne9 Voir le message
    J'ai réussi.
    N'oublie pas d'expliquer comment (ça pourra servir à d'autre) et de cliquer à ce topic s'il l'est vraiment.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  4. #4
    Membre averti
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 34
    Par défaut
    Voilà ma fonction. En fait il faut faire la moyenne des trois couleurs et pas la moyenne de pixel.
    Il faudra juste que je regarde plus tard pour les bords...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    	}

  5. #5
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Juste une précision pour améliorer tes performances :
    - passer par getRBG fait appel au ColorSpace ce qui est super lent :-(
    - passer par le Raster (getRaster().getSample(...)) est déjà beaucoup plus rapide.
    - le top est d'utiliser carrément le DataBuffer !
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD18] Flouter une zone dans une image
    Par vinxo dans le forum WinDev
    Réponses: 6
    Dernier message: 04/10/2013, 07h55
  2. [CSS] Flouter une image en CSS + plugin jQuery
    Par Bisûnûrs dans le forum Contribuez
    Réponses: 6
    Dernier message: 29/05/2011, 00h53
  3. flouter une image
    Par josmiley dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 05/10/2009, 20h58
  4. Flouter une image en formant un degradé de flou
    Par Jim_Nastiq dans le forum Images
    Réponses: 2
    Dernier message: 17/01/2007, 09h01
  5. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo