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 :

Pixel transparent dans un ColorModel


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Par défaut Pixel transparent dans un ColorModel
    Bonjour,

    surement que je passe à côté d'un truc simple mais comme je vois pas du tout je préfère poser la question.

    J'ai une image PNG avec 3 couleurs dont du noir et un pixel transparent (de couleur noir aussi). Je passe mon image dans un BufferdImage. Je teste des pixels sauf que j'aimerai savoir comment faire la différence entre un pixel noir et un pixel transparent. Quand je fais un getRGB sur un pixel noir ou un pixel transparent j'ai la même valeur (0 ce qui est normal). Si je fais un .hasAlpha() à mon ColorModel j'ai bien True.

    Mais j'arrive pas à trouver la bonne méthode de la classe BufferedImage pour savoir si mon pixel est transparent ou non.

    Merci d'avance pour votre aide.

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pour calculer les composantes à partir du retour d'un getRGB:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void printPixelARGB(int pixel) {     
         int alpha = (pixel >> 24) & 0xff;
         int red = (pixel >> 16) & 0xff;
         int green = (pixel >> 8) & 0xff;
         int blue = (pixel) & 0xff;
         System.out.println("argb: " + alpha + ", " + red + ", " + green + ", " + blue); 
    }

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Avec un color model supportant la transparence, le noir devrait être un entier composé de 255 - 0 - 0 - 0 (donc la valeur de l'entier n'est pas 0) et le noir transparent être un entier composé de 0 - 0 - 0 - 0.

    De toute manière dès que l'alpha :
    • == 255 => opaque
    • compris dans ]0, 255[ => transparent à divers niveaux
    • == 0 => totalement transparent
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Par défaut
    Merci pour vos réponses.

    En fait j'ai trouvé le problème. Dans le color model je croyais que la valeur qui se répétait jusqu'à la fin de la table rgb était le noir (soit 2^24) alors qu'en fait c'est le bleu (2^24 - 255) et c'est lui qui se répète jusqu'à la fin. J'ai donc bien toutes mes couleurs.

    Désole de vous avoir dérangé.

Discussions similaires

  1. soucis de transparence dans un listbox
    Par firejocker dans le forum MFC
    Réponses: 4
    Dernier message: 25/01/2006, 18h47
  2. Rendre le fond transparent dans une picturebox
    Par fun31 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/01/2005, 18h17
  3. Image GIF a fond transparent dans un formulaire ?
    Par Coquelicot dans le forum IHM
    Réponses: 4
    Dernier message: 25/10/2004, 12h08
  4. Transparence dans un dégradé
    Par WriteLN dans le forum Flash
    Réponses: 2
    Dernier message: 27/10/2003, 16h42

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