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

2D Java Discussion :

Réaliser une ombre


Sujet :

2D Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 34
    Points : 26
    Points
    26
    Par défaut Réaliser une ombre
    Bonjour,
    je cherche à réaliser des ombres à partir d'une image quelconque.
    Voici une simple image pour illustrer mon problème.

    Je voudrais simplement rajouter un effet d'anti-aliasing à l'ombre.

    Pour arriver à ce résultat je réduit l'image de 33% de hauteur puis je la cisaille, ensuite je transforme tout pixel de couleur en noir ( et le transparent reste tel quel ) , le problème vient de cette transformation qui ne peut gérer d'anti-aliasing, je ne vois pas vraiment comment faire.

    Voici le code pour ceux qui préfère :
    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
     
    	private BufferedImage toOmbre(Image image) 
    	{
           BufferedImage bufferedImage = configurationGC.createCompatibleImage(image.getWidth(null)*2, image.getHeight(null)*35/100, BufferedImage.TYPE_INT_ARGB);
     
                    Graphics2D g = (Graphics2D) bufferedImage.getGraphics();
                    g.shear(0.8,0);
                    g.drawImage(image,0,0,image.getWidth(null), image.getHeight(null)*33/100,null);
                    g.dispose();
     
            for(int i=0;i<bufferedImage.getWidth();i++)
            	for(int j=0;j<bufferedImage.getHeight();j++)
            		{
                		int rgb = bufferedImage.getRGB(i,j);
     
                		if(((rgb >>16 ) & 0xFF) != 0 && ((rgb >> 8 ) & 0xFF ) !=0 &&  (rgb & 0xFF) !=0) 
    bufferedImage.setRGB(i,j,(255<<24)+(0<<16)+(0<<8)+0);
            		}
     
     
            return bufferedImage;  
    	}
    Y aurait-il une méthode de Graphics2D qui permettrait de transformer une image en noir là ou il y a de la couleur et de laisser un effet d'anti-aliasing aux bordures?

    Merci à vous.
    Images attachées Images attachées  

  2. #2
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Pour l'effet anti-aliasing, il me semble que c'est la simple application d'un flou sur l'image. Essaies avec le code suivant :

    http://java.developpez.com/faq/gui/?...QUE_IMAGE_flou

  3. #3
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    En ce qui concerne le blur (flou) je te conseille plutôt de t'intéresser à la page suivante qui propose des implémentation braucoup plus rapides que celles décrites dans la faq.

    http://www.jhlabs.com/ip/blurring.html

    Pour l'antialiasing d'images il te faut te tourner vers la technique du soft clipping: http://weblogs.java.net/blog/campbel...d_tricker.html

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup,
    j'ai donc mis un filtre flou ( comme expliqué sur les liens ) qui en plus ajoute un effet de transparence à l'ombre.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 23/01/2008, 09h17
  2. [GD] Réaliser une ombre
    Par Atomicfryer dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 03/02/2005, 16h35
  3. [FLASH MX] Comment réaliser une forme dentelée
    Par celina5880 dans le forum Flash
    Réponses: 4
    Dernier message: 04/11/2004, 17h48
  4. [TQuery]Réaliser une requete à partir d'une requete
    Par Eric SAULNIER dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/07/2004, 12h00
  5. Contenir une ombre ds un plan : PB DE STENCIL !
    Par Muetdhiver dans le forum OpenGL
    Réponses: 6
    Dernier message: 11/03/2004, 12h34

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