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

API graphiques Discussion :

libpng se plante à cause de "png_read_info"


Sujet :

API graphiques

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 115
    Points : 47
    Points
    47
    Par défaut libpng se plante à cause de "png_read_info"
    Bonjours tout le monde,

    Je veux lire une image PNG en utilisant la libpng (j'utilise la version 1.2.8) mon problème se produise lors de l’exécution de la fonction" png_read_info " un message d'erreur indiquant qu'une Violation d’accès mémoire c'est produit. Voici ma fonction
    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    /* OpenGL texture info */
    struct gl_texture_t
    {
      GLsizei width;
      GLsizei height;
     
      GLenum format;
      GLint internalFormat;
      GLuint id;
     
      GLubyte *texels;
    };
     
    static struct gl_texture_t * ReadPNGFromFile (const char *filename)
    {
      struct gl_texture_t *texinfo;
      png_byte magic[8];
      png_structp png_ptr;
      png_infop info_ptr;
      int bit_depth, color_type;
      FILE *fp = NULL;
      png_bytep *row_pointers = NULL;
      png_uint_32 w, h;
      int i;
     
      /* Open image file */
      fp = fopen (filename, "rb");
      if (!fp)
        {
          fprintf (stderr, "error: couldn't open \"%s\"!\n", filename);
          return NULL;
        }
     
      /* Read magic number */
      fread (magic, 1, sizeof (magic), fp);
     
      /* Check for valid magic number */
      if (!png_check_sig (magic, sizeof (magic)))
        {
          fprintf (stderr, "error: \"%s\" is not a valid PNG image!\n",
    	       filename);
          fclose (fp);
          return NULL;
        }
     
      /* Create a png read struct */
      png_ptr = png_create_read_struct
        (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
      if (!png_ptr)
        {
          fclose (fp);
          return NULL;
        }
     
      /* Create a png info struct */
      info_ptr = png_create_info_struct (png_ptr);
      if (!info_ptr)
        {
          fclose (fp);
          png_destroy_read_struct (&png_ptr, NULL, NULL);
          return NULL;
        }
     
      /* Create our OpenGL texture object */
      texinfo = (struct gl_texture_t *)
        malloc (sizeof (struct gl_texture_t));
     
      /* Initialize the setjmp for returning properly after a libpng
         error occured */
      if (setjmp (png_jmpbuf (png_ptr)))
        {
          fclose (fp);
          png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
     
          if (row_pointers)
    	free (row_pointers);
     
          if (texinfo)
    	{
    	  if (texinfo->texels)
    	    free (texinfo->texels);
     
    	  free (texinfo);
    	}
     
          return NULL;
        }
     
      /* Setup libpng for using standard C fread() function
         with our FILE pointer */
      png_init_io (png_ptr, fp);
     
      /* Tell libpng that we have already read the magic number */
      png_set_sig_bytes (png_ptr, sizeof (magic));
     
      /* Read png info */
      png_read_info (png_ptr, info_ptr); // C'EST LA OU IL CE PLANTE
     
    ........................
    Je serai très reconnaissante si vous arrivez à m'aider

  2. #2
    Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 115
    Points : 47
    Points
    47
    Par défaut
    j'ai changé la version j'utilise libpng 1.2.37 et zlib 1.2.3 mais c'est toujours le même problème ?

    Merci d'avance pour tout ce qui essaye de m'aider

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 115
    Points : 47
    Points
    47
    Par défaut
    C'est bon j'ai trouvé la solution ... il fallait suivre ces étapes pour une configuration correcte et voici le lien

    http://www.leptonica.org/vs2008doc/b...libraries.html

    Bon courage

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

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