Bienvenue sur nos forums !
Vous n'êtes pas identifié.
Si qqun aurai déjà utiliser la libpng 1.2.8 avec zlib dans un projet visual c++ je serai intéressé de voir comment il a fait.
En fait j'utilise les binaries telechargé directement de zlib.org et de libpng (dll et .lib) et je me retrouve avec un gros crash à l'éxecution sur
png_read_info(png_ptr,info_ptr);
merci.
ps: j'ai pourtant fait comme dans les exemples, et dans le man de libpng.
Hors ligne
A force de farfouillé j'ai trouvé une solution.
Il suffit de definir la fonction callback de lecture (ecriture si mode saving), apparement elle ne devait pas être définie par défaut.
exemple:
void _ReadProc(struct png_struct_def *, unsigned char *data, unsigned int size)
{
fread(data,size,1,file_handle);
}et dans la fonction avant de lire le header:
png_set_read_fn(png_ptr,info_ptr,_ReadProc);
Bon maintenant me reste à faire marcher la décompression de l'image en elle même, et c'est un autre cinéma.
Hors ligne
Bon j'en profite pour poster aussi l'astuce pour lire un png avec ligpng à partir de la mémoire et non d'un fichier.
typedef struct O3D_pngFileBuffer
{
O3D_UCHAR *buffer;
O3D_INT pos;
}O3D_pngFileBuffer;
png_filebuffer.pos = 0;
png_filebuffer.buffer = pData;
png_set_read_fn(png_ptr,(png_voidp)&png_filebuffer,_ReadProc);
au lieu de
png_set_read_fn(png_ptr,info_ptr,_ReadProc); png_init_io(png_ptr,pFile);
Et rulez!
Heu oui _ReadProc c'est votre callback pour lire les data t'facon c'est obligatoire avec libpng d'en coder un.
Hors ligne
Bonjour!
J'implémente un petit programme qui utilise des images PNG (pour gérer la transparence) et je rencontre exactement ce problème !
En effet, j'ai un énorme CRASH lorsque je fais : png_read_info(png_ptr,info_ptr);
J'avoue que je n'ai pas trés bien compris comment FmrFrBird a résolu le problème
(Je suis une débutante)
Où faut il écrire le call back?
A quelle moment fait on appel à png_set_read_fn(png_ptr,info_ptr,_ReadProc) ?
merçi d'avance !
Hors ligne