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 :

Superposer une BufferedImage (TYPE_INT_ARGB) et gestion transparence


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Mai 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1
    Par défaut Superposer une BufferedImage (TYPE_INT_ARGB) et gestion transparence
    Bonjour,

    en désespoir de cause, je me tourne vers ce forum qui m'a maintes fois sauvé par le passé.

    J'ai un problème pour gèrer la transparence d'une BufferedImage sur une autre. Je vais mettre un bout de code simplifié qui vaudra mieux qu'un long discours.

    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
    public static void combineImages(BufferedImage image1, BufferedImage2){
     
    BufferedImage imageToReturn=new BufferedImage(image1.getWidth(), image1.getHeight(), BufferedImage.TYPE_INT_ARGB);
     
    Graphics2D graphicsToReturn= (Graphics2D) imageToReturn.getGraphics();
     
     
    graphicsToReturn.setComposite(AlphaComposite.Src);
    // Copie l'image1 dans imageToReturn tout simplement en écrasant toutes les valeurs précedemment contenue dans imageToReturn (à cause de AlphaComposite.Src)
    graphicsToReturn.drawImage(image1, 0, 0, null);
     
     
    //Ici makeTransparent() est une méthode qui transforme tous les pixel de la couleur passée en paramètre dans l'image par la même couleur mais avec un canal alpha à 00.
     
    //j'ai essayé de changer le graphicsToReturn.setComposite() à d'autres valeurs sans succès. La deuxieme image insérée "écrase" toujours celle insérée en premier.
    graphicsToReturn.setComposite(AlphaComposite.SrcOver);
    graphicsToReturn.drawImage(makeTransparent(image2, new Color(0xFFFFFFFF),0, 0, null);
     
     
    }
    Voilà, comme vous pouvez le voir je veux que image2 soit superposée à image1 mais avec les pixel blancs (0xFFFFFFFF) de image2 laissant apparaitre l'image1. Ma méthode makeTransparent() met normalement les pixel (0xFFFFFFFF) à la valeur (0x00FFFFFF)

    Qu'ai je manqué ?

    Merci d'avance aux répondants.

  2. #2
    Membre éprouvé
    Inscrit en
    Juin 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 189
    Par défaut
    On pourrait voir ta méthode makeTransparent.

    A noter qu'il manque le dispose sur le Graphics.


    Quand je copiais une image qui a un canal alpha sur une autre, je faisais simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    BufferedImage copy  //contient déjà l'image d'origine
    Graphics2D g2d = copy.createGraphics();
     
     
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
    			                RenderingHints.VALUE_ANTIALIAS_ON);
    			g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,
    			                RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
     
    g2d.drawImage(im, 0, 0, null); //ajout le layer
    g2d.dispose();

Discussions similaires

  1. [Débutant] superposer une image en transparence
    Par kbazin dans le forum Images
    Réponses: 3
    Dernier message: 30/07/2010, 18h34
  2. Gestion de pixels sur une BufferedImage
    Par jlassiramzy dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 08/08/2006, 23h02
  3. [Internet Explorer] Gestion transparence png
    Par LE NEINDRE dans le forum IE
    Réponses: 5
    Dernier message: 17/03/2006, 12h44
  4. Dessiner une ligne dans un cube transparent ?
    Par Muetdhiver dans le forum OpenGL
    Réponses: 4
    Dernier message: 04/05/2004, 11h06

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