J'essaie de lire un png en utilisant la DLL officielle ainsi que celle de zlib, et j'ai apparament une erreur dans une fonction de la lib, un access violation. J'ai pourtant pris le code conseillé sur le site officiel, et j'en ai fais une classe...
voila le code
bool c_ImagePNG::LoadPNG(char path[]){
FILE *fp;
char buffer[PNG_BYTES_TO_CHECK];
try{
if (!(fp = fopen(path, "rb"))){
error = "Error: Problem opening [";
throw error;
}
if (fread(buffer, 1, PNG_BYTES_TO_CHECK, fp) != PNG_BYTES_TO_CHECK){
fclose(fp);
error = " Error: Problem reading [";
throw error;
}
// png_sig_cmp() checks the given PNG header and returns 0 if it could be the start of a PNG file.
if(png_sig_cmp((png_byte*)buffer, (png_size_t)0, PNG_BYTES_TO_CHECK)){
fclose(fp);
error = " Error: Invalid PNG [";
throw error;
}
png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
if(!png_ptr){
fclose(fp);
error = " Error: Problem creating PNG read structure [";
throw error;
}
png_infop info_ptr = png_create_info_struct(png_ptr);
if(!info_ptr){
fclose(fp);
png_destroy_read_struct(&png_ptr, NULL, NULL);
error = " Error: Problem creating PNG info structure [";
throw error;
}
// Setup error handler
if (setjmp(png_jmpbuf(png_ptr))){
fclose(fp);
png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
error = " Error: Problem setting PNG error handler [";
throw error;
}
png_init_io(png_ptr, fp);
png_set_sig_bytes(png_ptr, PNG_BYTES_TO_CHECK);
int png_transform = PNG_TRANSFORM_IDENTITY;
png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, NULL);
et ca plante dans le png_read_png()...
vous voyez une erreur? Vous avez des suggestions?
merci d'avance