Note that libpng has already taken care of the CRC handling.
*/
+ LogMagickEvent(CoderEvent,GetMagickModule(),
+ " read_vpag_chunk: found %c%c%c%c chunk",
+ chunk->name[0],chunk->name[1],chunk->name[2],chunk->name[3]);
if (chunk->name[0] != 118 || chunk->name[1] != 112 ||
chunk->name[2] != 65 ||chunk-> name[3] != 103)
Image
*image;
+ char
+ im_vers[32],
+ libpng_runv[32],
+ libpng_vers[32],
+ zlib_runv[32],
+ zlib_vers[32];
+
int
intent, /* "PNG Rendering intent", which is ICC intent + 1 */
num_raw_profiles,
logging=LogMagickEvent(CoderEvent,GetMagickModule(),
" Enter ReadOnePNGImage()");
+ /* Define these outside of the following "if logging()" block so they will
+ * show in debuggers.
+ */
+ *im_vers='\0';
+ (void) ConcatenateMagickString(im_vers,
+ MagickLibVersionText,32);
+ (void) ConcatenateMagickString(im_vers,
+ MagickLibAddendum,32);
+
+ *libpng_vers='\0';
+ (void) ConcatenateMagickString(libpng_vers,
+ PNG_LIBPNG_VER_STRING,32);
+ *libpng_runv='\0';
+ (void) ConcatenateMagickString(libpng_runv,
+ png_get_libpng_ver(NULL),32);
+
+ *zlib_vers='\0';
+ (void) ConcatenateMagickString(zlib_vers,
+ ZLIB_VERSION,32);
+ *zlib_runv='\0';
+ (void) ConcatenateMagickString(zlib_runv,
+ zlib_version,32);
+
+ if (logging)
+ {
+ LogMagickEvent(CoderEvent,GetMagickModule()," IM version = %s",
+ im_vers);
+ LogMagickEvent(CoderEvent,GetMagickModule()," Libpng version = %s",
+ libpng_vers);
+ if (LocaleCompare(libpng_vers,libpng_runv) != 0)
+ {
+ LogMagickEvent(CoderEvent,GetMagickModule()," running with %s",
+ libpng_runv);
+ }
+ LogMagickEvent(CoderEvent,GetMagickModule()," Zlib version = %s",
+ zlib_vers);
+ if (LocaleCompare(zlib_vers,zlib_runv) != 0)
+ {
+ LogMagickEvent(CoderEvent,GetMagickModule()," running with %s",
+ zlib_runv);
+ }
+ }
+
#if (PNG_LIBPNG_VER < 10200)
if (image_info->verbose)
printf("Your PNG library (libpng-%s) is rather old.\n",
if (logging != MagickFalse)
{
(void)LogMagickEvent(CoderEvent,GetMagickModule(),
- " Before reading:");
+ " Before reading:");
(void)LogMagickEvent(CoderEvent,GetMagickModule(),
- " image->alpha_trait=%d",(int) image->alpha_trait);
+ " image->alpha_trait=%d",(int) image->alpha_trait);
(void)LogMagickEvent(CoderEvent,GetMagickModule(),
- " image->rendering_intent=%d",(int) image->rendering_intent);
+ " image->rendering_intent=%d",(int) image->rendering_intent);
(void)LogMagickEvent(CoderEvent,GetMagickModule(),
- " image->colorspace=%d",(int) image->colorspace);
+ " image->colorspace=%d",(int) image->colorspace);
(void)LogMagickEvent(CoderEvent,GetMagickModule(),
- " image->gamma=%f", image->gamma);
+ " image->gamma=%f", image->gamma);
}
intent=Magick_RenderingIntent_to_PNG_RenderingIntent(image->rendering_intent);
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
/* Ignore unused chunks and all unknown chunks except for vpAg */
+#if PNG_LIBPNG_VER < 10700 /* Avoid libpng16 warning */
+ png_set_keep_unknown_chunks(ping, 2, NULL, 0);
+#else
png_set_keep_unknown_chunks(ping, 1, NULL, 0);
+#endif
png_set_keep_unknown_chunks(ping, 2, mng_vpAg, 1);
png_set_keep_unknown_chunks(ping, 1, unused_chunks,
(int)sizeof(unused_chunks)/5);
{
if (ping_found_sRGB != MagickTrue &&
(ping_found_gAMA != MagickTrue ||
- image->gamma < .45 || image->gamma > .46) &&
+ (image->gamma > .45 && image->gamma < .46)) &&
(ping_found_cHRM != MagickTrue ||
ping_found_sRGB_cHRM == MagickTrue) &&
ping_found_iCCP != MagickTrue)
png_set_sRGB(ping,ping_info,
Magick_RenderingIntent_to_PNG_RenderingIntent
(image->rendering_intent));
- png_set_gAMA(ping,ping_info,1.000f/2.200f);
+ if (ping_found_gAMA != MagickTrue)
+ png_set_gAMA(ping,ping_info,1.000f/2.200f);
file_gamma=1.000f/2.200f;
ping_found_sRGB=MagickTrue;
- ping_found_cHRM=MagickTrue;
+ (void) LogMagickEvent(CoderEvent,GetMagickModule(),
+ " Setting sRGB and gAMA as if in input");
}
}
unsigned char
*volatile ping_pixels;
+ char
+ im_vers[32],
+ libpng_runv[32],
+ libpng_vers[32],
+ zlib_runv[32],
+ zlib_vers[32];
+
volatile int
image_colors,
ping_bit_depth,
if (image_info == (ImageInfo *) NULL)
ThrowWriterException(ResourceLimitError, "MemoryAllocationFailed");
+ /* Define these outside of the following "if logging()" block so they will
+ * show in debuggers.
+ */
+ *im_vers='\0';
+ (void) ConcatenateMagickString(im_vers,
+ MagickLibVersionText,MaxTextExtent);
+ (void) ConcatenateMagickString(im_vers,
+ MagickLibAddendum,MaxTextExtent);
+
+ *libpng_vers='\0';
+ (void) ConcatenateMagickString(libpng_vers,
+ PNG_LIBPNG_VER_STRING,32);
+ *libpng_runv='\0';
+ (void) ConcatenateMagickString(libpng_runv,
+ png_get_libpng_ver(NULL),32);
+
+ *zlib_vers='\0';
+ (void) ConcatenateMagickString(zlib_vers,
+ ZLIB_VERSION,32);
+ *zlib_runv='\0';
+ (void) ConcatenateMagickString(zlib_runv,
+ zlib_version,32);
+
+ if (logging)
+ {
+ LogMagickEvent(CoderEvent,GetMagickModule()," IM version = %s",
+ im_vers);
+ LogMagickEvent(CoderEvent,GetMagickModule()," Libpng version = %s",
+ libpng_vers);
+ if (LocaleCompare(libpng_vers,libpng_runv) != 0)
+ {
+ LogMagickEvent(CoderEvent,GetMagickModule()," running with %s",
+ libpng_runv);
+ }
+ LogMagickEvent(CoderEvent,GetMagickModule()," Zlib version = %s",
+ zlib_vers);
+ if (LocaleCompare(zlib_vers,zlib_runv) != 0)
+ {
+ LogMagickEvent(CoderEvent,GetMagickModule()," running with %s",
+ zlib_runv);
+ }
+ }
+
/* Initialize some stuff */
ping_bit_depth=0,
ping_color_type=0,