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 :

guint , unsigned long, unsigned char


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 88
    Par défaut guint , unsigned long, unsigned char
    Bonjour ^ ^

    je me pose quelque petites questions la

    Ques que le type guint( y a les 8 16 et 32 ??? je trouve pas de definition précise sur le net la dessus ( ca vient juste de gtkmm ou bien c'est utiliser ailleur aussi?)

    Dans mon programme, j'ai un unsigned char, qui est casté par un programme en unsigned long, que je récupere. Or pour le passer dans le traitement gtkmm, j'ai besoin de lui faire un cast (guint8) . La question est de savoir si ce que je récupere a subie une perte sur ses données ou pas ???

    Car j'ai normalement une image couleur, mais suite a ce cast, ben elle est plus coloré mais toute noire et blanche.

    http://www.gtkmm.org/docs/gtkmm-2.4/...c4abe9c294d341

    et sur la page de gtkmm il y a ca qui me stress un coup

    Currently only RGB images with 8 bits per sample are supported.

    Merci ^^

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ques que le type guint( y a les 8 16 et 32 ??? je trouve pas de definition précise sur le net la dessus ( ca vient juste de gtkmm ou bien c'est utiliser ailleur aussi?)
    Vu le nom je pense que ce sont des types spécifiques à GTK.

    Dans mon programme, j'ai un unsigned char, qui est casté par un programme en unsigned long, que je récupere. Or pour le passer dans le traitement gtkmm, j'ai besoin de lui faire un cast (guint8) . La question est de savoir si ce que je récupere a subie une perte sur ses données ou pas ???
    Si ton nombre tient dans l'intervalle d'un guint8, alors aucune raison que tu perdes quoique ce soit. Et comme au départ il vient d'un unsigned char, ça a toutes les chances d'être bon.

    Car j'ai normalement une image couleur, mais suite a ce cast, ben elle est plus coloré mais toute noire et blanche.
    T'es sûr que ton unsigned long ne contient pas les 3 composantes RGB plutôt qu'une seule ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 88
    Par défaut
    Pour le dernier point, oui, en fait, dans le unsigned long, on a R G B X un pour chaque octet, mais je vois pas trop comment les récuperer apres pour les mixé dans un pixel

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    guint32 Pixel = ...;
    guint8 R = (Pixel & 0xFF000000) >> 24;
    guint8 G = (Pixel & 0x00FF0000) >> 16;
    guint8 B = (Pixel & 0x0000FF00) >> 8;

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Attention... ça c'est du xBGR sous Intel j
    Si l'image est en RGBx ... R est l'octet de poids faible sous Intel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    guint32 Pixel = ...;
    guint8 R = (Pixel & 0x000000FF) ;
    guint8 G = (Pixel & 0x0000FF00) >> 8;
    guint8 B = (Pixel & 0x00FF0000) >> 16;
    Mais bon... ca métonnerai que gtkmm n'ai pas les fonctions pour extraire les composantes.

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    J'utilise les opérateurs & et >> justement pour m'abstraire de l'endianess de la machine. Un code qui ne le ferait pas serait par exemple celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // A NE PAS FAIRE, CODE NON PORTABLE
    guint32 Pixel;
    guint8* Components = reinterpret_cast<guint8*>(&Pixel);
    guint8 R = Components[0];
    guint8 G = Components[1];
    guint8 B = Components[2];

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

Discussions similaires

  1. unsigned long long int -> char*
    Par Kaluza dans le forum Langage
    Réponses: 2
    Dernier message: 28/05/2011, 03h12
  2. Réponses: 1
    Dernier message: 15/02/2007, 17h32
  3. unsigned long long int
    Par salseropom dans le forum C
    Réponses: 10
    Dernier message: 21/12/2006, 22h43
  4. petit probleme avec un (unsigned long int)
    Par Micks71 dans le forum C
    Réponses: 6
    Dernier message: 19/05/2006, 12h08
  5. Réponses: 6
    Dernier message: 06/12/2005, 16h54

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