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 :

Sauver/ReCharger une image, donne


Sujet :

C++

  1. #1
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut Sauver/ReCharger une image, donne
    Bonjour

    J'ai un problème concernant la lecture d'un fichier image que j'ai sauvé en C++
    En fait j'obtien ceci:

    L'image de départ est bienentendu à droite

    Je sauve l'image comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        ofstream file( LDEstc(filename) );
        file.write( (char*)&m_width, sizeof(LDEuint) ); // largeur
        file.write( (char*)&m_height, sizeof(LDEuint) ); // hauteur
        file.write( (char*)&m_bpp, sizeof(LDEuint) ); // bpp
        file.write(reinterpret_cast<char*>(m_data), m_bpp*m_width*m_height ); // le data
    Ensuite je fais ma lecture ainsi:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    #define LDET_NO_FILTER 0
    #define LDET_LINEAR 1
    #define LDET_BILINEAR 2
    #define LDET_TRILINEAR 3
    #define LDET_ANISOTROPIC 4
     
    struct LDEldet
    {
        LDEboolean *data;
    	LDEuint h, w, bpp;
    	string name;
     
        void load(string path, LDEuint & id, LDEuint mode )
        {
            name = path;
            ifstream file( LDEstc(path) );
            file.read( (char*)&w, sizeof(LDEuint) );
            file.read( (char*)&h, sizeof(LDEuint) );
            file.read( (char*)&bpp, sizeof(LDEuint) );
            data = new LDEboolean[ bpp*w*h ];
            file.read(reinterpret_cast<char*>(data), bpp*w*h );
     
            glGenTextures(1, &id);
            glBindTexture(GL_TEXTURE_2D,id);
            gluBuild2DMipmaps(GL_TEXTURE_2D,
                              bpp,    // bpp
                              w,      // largeur
                              h,      // hauteur
                              (bpp == 3 ? GL_RGB : GL_RGBA), // type
                              GL_UNSIGNED_BYTE, //
                              data);
     
            free(data); // close our data
     
            // filter
            switch ( mode )
            {
                case LDET_NO_FILTER:
                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
                break;
     
                case LDET_LINEAR:
                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
                break;
     
                case LDET_BILINEAR:
                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
                break;
     
                case LDET_TRILINEAR:
                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);
                break;
     
            #ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT
                case LDET_ANISOTROPIC:
                glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 2.0f);
                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
                break;
            #endif
            }
            glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
        }
    };
    L'image de départ c'est une .tga, et des fois ca passe bien la lecture/sauvegarde/relecture ^^ quand elle est genre 128*128pixels, même avec alpha.

    Mais voila dans la pluspart des cas j'ai ce genre de resultat, que devrais-je faire?
    Par avance, merci!

  2. #2
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Tu as essayé de lire le fichier en binaire ?
    Parcequ'il me semble bien que ifstream par défaut lise du texte...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Trop bon, je vous aime tous!
    Cela fonctionne parfaitement en mettant:

    ofstream file( LDEstc(filename), ios::binary ); // quand on sauve
    // et
    ifstream file( LDEstc(path), ios::binary ); // quand on recharge

    Merci encore, @bientôt

  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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    N'oublie pas de cliquer sur

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

Discussions similaires

  1. [Prototype] Recharger une image
    Par estampille dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 05/01/2009, 14h54
  2. Réponses: 6
    Dernier message: 09/10/2008, 19h43
  3. [PHP-JS] Recharger une image
    Par L8O8L dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 14/05/2008, 16h27
  4. Recharger une image dans la cache
    Par Prophetis dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/07/2006, 13h24
  5. Réponses: 2
    Dernier message: 20/04/2006, 16h03

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