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

Graphisme Java Discussion :

creer une image transparente a partir d'une image a fond blanc


Sujet :

Graphisme Java

  1. #1
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut creer une image transparente a partir d'une image a fond blanc
    Bonjour,

    tout est dans le titre j'ai une image qui a un fond blanc et je souhaite recuperer une image identique avec de la transparence à la place du blanc pour l'integrer au final dans un panel.
    J'ai testé plusieurs choses mais en vain, l'image finale possede toujours son fond blanc:

    voici ce que je fais actuellement (GraphicsUtilities est une librairie de romain guy):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    BufferedImage shapeImageCopy = null;
    BufferedImage shapeImage = GraphicsUtilities.loadCompatibleImage( AbstractFilter.class.getResource("monImage.gif"));
     
    shapeImageCopy = GraphicsUtilities.createTranslucentCompatibleImage( shapeImage.getWidth(), shapeImage.getHeight());
    Graphics2D g2d = (Graphics2D)shapeImageCopy.getGraphics();
    g2d.setComposite(AlphaComposite.Src);
    g2d.drawImage(shapeImage, 0, 0, null);
    merci pour votre aide eventuelle

  2. #2
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    pour ceux que ca interesse j'ai trouvé une soluce qui marche plutot bien, reste a voir si c'est pas trop lent qd il y a beaucoup d'images a traiter

    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
     
    Image ImageCopy = null;
    BufferedImage shapeImage = GraphicsUtilities.loadCompatibleImage( AbstractFilter.class.getResource("monImage.png"));
    ImageCopy = makeColorTransparent(shapeImage, new Color(255,255,255));	        	
    .....
     
     public Image makeColorTransparent (Image im, final Color color) {
    	ImageFilter filter = new RGBImageFilter() {
    	 // the color we are looking for... Alpha bits are set to opaque
    	public int markerRGB = color.getRGB() | 0xFF000000;
     
    	public final int filterRGB(int x, int y, int rgb) {
    	     if ( ( rgb | 0xFF000000 ) == markerRGB ) {
    		// Mark the alpha bits as zero - transparent
    		return 0x00FFFFFF & rgb;
    	      } else {
    		// nothing to do
    		 return rgb;
    	      }
    	}
              }; 
     
    ImageProducer ip = new FilteredImageSource(im.getSource(), filter);
    return Toolkit.getDefaultToolkit().createImage(ip);
    }
     
    voila
    ++

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    423
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 423
    Points : 303
    Points
    303
    Par défaut
    bonjour,
    la classe GraphicsUtilities appartient à quelle package??

  4. #4
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.jdesktop.swingx.graphics.GraphicsUtilities
    Librairie SwingX de SwingLabs.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    423
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 423
    Points : 303
    Points
    303
    Par défaut
    Bonjour,
    effectivement ça marche très bien mais qu'on jessaye d'afficher l'image avec un bufferedimage les pixels transparents prennent la couleur noir?? comment je peux résoudre ce problème?

  6. #6
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    salut,

    bein le probleme avec cette methode c'est que ca crée une image avec le toolkit qui ne beneficie pas de l'acceleration materielle (contrairement aux bufferedImage) .

    quelle methode utilise tu pour "caster" ton image en bufferedImage (ou quelle methode de conversion utilises tu ?

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/08/2012, 10h24
  2. Réponses: 7
    Dernier message: 22/01/2009, 09h39
  3. Réponses: 4
    Dernier message: 07/08/2008, 17h12
  4. [FEDORA] Créer un package rpm à partir d'une source src.rpm
    Par Davesique dans le forum RedHat / CentOS / Fedora
    Réponses: 1
    Dernier message: 30/10/2006, 20h53
  5. generer une image bitmap a partir d'une scene OGL
    Par FreshLog dans le forum OpenGL
    Réponses: 4
    Dernier message: 01/07/2003, 11h29

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