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

C++ Discussion :

comment ajouter alpha dans un pixel RGB ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Par défaut comment ajouter alpha dans un pixel RGB ?
    salut, j'ai une image RGB, je veux transformé tous ses pixels en ajoutant la valeur alpha. comment faire ? Merci bien

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 104
    Billets dans le blog
    146
    Par défaut
    Bonjour,

    Il faut lire le fichier et pour chaque pixel, lui rajouter un alpha puis réecrire le fichier.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 639
    Par défaut
    Salut,

    En fait, un pixel RGB n'est jamais qu'un pixel RGBA dont l'alpha serait à 100% par défaut

    Tu peux donc "simplement" utiliser ta structure RGBA en donnant une valeur par défaut pour l'alpha

    Les pixels sont souvent défini avec des unsigned char (uint8_t ) pour les couleurs, ce qui fait que ta structure RGBA pourrait ressembler à quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct RGBA
    {
        RGBA(char R, char G, char B, char A = 255):red(R), green(G), blue(B),
        alpha(A){}
        unsigned char red;
        unsigned char green;
        unsigned char blue;
        unsigned char alpha;
    };
    et tu pourrais très bien avoir une fonction d'écriture (et une de lecture) dans (respectivement depuis) un fichier n'utilisant que RGB et une autre (en fait deux autres) pour l'écriture (et la lecture) dans (respectivement depuis) un fichier utilisant RGBA, qui prendraient la forme de
    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
    RGBA readFromRgbFile(std::ifstream ifs)
    {
        unsigned char red;
        unsigned char green;
        unsigned char blue;
        ofs>>red>>green>>blue;
        return RGBA(red, green, blue);
    }
     
    RGBA readFromRgbAlphaFile(std::ifstream ifs)
    {
        unsigned char red;
        unsigned char green;
        unsigned char blue;
        unsigned char alpha;
        ofs>>red>>green>>blue>>alpha;
        return RGBA(red, green, blue,alpha);
    }
    void writeToRgbFile(std::ifstream ifs, RGBA const & rgba)
    {
        ifs<<rgba.red
           <<rgba.green
           <<rgba.blue;
    }
    void writeToRgbAlphaFile(std::ifstream ifs, RGBA const & rgba)
    {
        ifs<<rgba.red
           <<rgba.green
           <<rgba.blue
           <<rgba.alpha;
    }
    Je te laisse le soin de trouver la logique pour lire/écrire tous les pixels, mais un petit tour vers la Faq devrait te donner des directions sympa
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2007
    Messages : 373
    Par défaut
    Citation Envoyé par koala01 Voir le message
    En fait, un pixel RGB n'est jamais qu'un pixel RGBA dont l'alpha serait à 100% par défaut
    Dans l'idée oui, mais en pratique ça va dépendre du format du fichier image. D'ailleurs, il est probable que le format d'entrée ne supporte pas l'alpha par défaut (voir pas du tout), et dans ce cas l'opération n'est pas complètement triviale.

    Quel format utilises-tu ? BMP, JPG, PNG, ... ?

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 639
    Par défaut
    Citation Envoyé par Kalith Voir le message
    Dans l'idée oui, mais en pratique ça va dépendre du format du fichier image. D'ailleurs, il est probable que le format d'entrée ne supporte pas l'alpha par défaut (voir pas du tout), et dans ce cas l'opération n'est pas complètement triviale.

    Quel format utilises-tu ? BMP, JPG, PNG, ... ?
    Mais, à partir du moment où il ne s'agit que de lire le pixel, pour éventuellement convertir dans un autre format qui supporte l'alpha, tu n'as pas vraiment à t'inquiéter de ce problème.

    Tu devras, effectivement, lire le fichier en respectant son format, mais, au moment de créer le tableau de pixels qui constituent ton image, tu peut parfaitement envisager de générer des pixels RGBA dont l'alpha est à 100% par défaut

    C'était là le sens de ma phrase, en réalité
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2007
    Messages : 373
    Par défaut
    Je suis bien d'accord avec ça Ce que je soulignais, c'est que ce qu'on appelle un "pixel" (i.e. la chose qui s'affiche à l'écran) peut avoir une définition très différente selon le format d'image que l'on utilise, et rajouter un canal alpha peut être simple, ou pas.

    Ce que tu suggères est juste, mais à mon avis ce n'est (ne sera) pas le cœur du problème. Ceci dit, il est dur d'en juger avec le peu d'information qui a été donné...

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

Discussions similaires

  1. Comment ajouter Jbutton dans chaque ligne de Jtable ?
    Par riamo dans le forum Général Java
    Réponses: 2
    Dernier message: 03/05/2013, 13h28
  2. [Toutes versions] Comment ajouter user dans moss
    Par majmaj dans le forum SharePoint
    Réponses: 2
    Dernier message: 12/08/2009, 10h49
  3. comment ajouter API dans eclipse?
    Par ouadie99 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 06/01/2007, 09h51
  4. Réponses: 1
    Dernier message: 25/09/2006, 17h15
  5. Réponses: 8
    Dernier message: 16/03/2006, 07h36

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