From: glennrp Date: Wed, 3 Apr 2013 13:41:41 +0000 (+0000) Subject: Don't write PNG gAMA or cHRM chunks when writing the sRGB or iCCP chunk. X-Git-Tag: 7.0.1-0~3961 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=918b9dc4bb00c06632ccc6169ea05a828f7b6fc1;p=imagemagick Don't write PNG gAMA or cHRM chunks when writing the sRGB or iCCP chunk. --- diff --git a/coders/png.c b/coders/png.c index 04399394f..0fe8bbbbd 100644 --- a/coders/png.c +++ b/coders/png.c @@ -2622,12 +2622,10 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, png_set_sRGB(ping,ping_info, Magick_RenderingIntent_to_PNG_RenderingIntent (image->rendering_intent)); - 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; (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " Setting sRGB and gAMA as if in input"); + " Setting sRGB as if in input"); } } @@ -7801,7 +7799,9 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, ping_have_non_bw, ping_have_PLTE, ping_have_bKGD, + ping_have_iCCP, ping_have_pHYs, + ping_have_sRGB, ping_have_tRNS, ping_exclude_bKGD, @@ -7958,7 +7958,9 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, ping_have_non_bw=MagickTrue; ping_have_PLTE=MagickFalse; ping_have_bKGD=MagickFalse; + ping_have_iCCP=MagickFalse; ping_have_pHYs=MagickFalse; + ping_have_sRGB=MagickFalse; ping_have_tRNS=MagickFalse; ping_exclude_bKGD=mng_info->ping_exclude_bKGD; @@ -10445,6 +10447,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, (png_const_bytep) GetStringInfoDatum(profile), #endif (png_uint_32) GetStringInfoLength(profile)); + ping_have_iCCP = MagickTrue; } } @@ -10484,6 +10487,8 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, (void) png_set_sRGB(ping,ping_info,( Magick_RenderingIntent_to_PNG_RenderingIntent( image->rendering_intent))); + + ping_have_sRGB = MagickTrue; } } @@ -10491,6 +10496,8 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, #endif { if (ping_exclude_gAMA == MagickFalse && + ping_have_iCCP == MagickFalse && + ping_have_sRGB == MagickFalse && (ping_exclude_sRGB == MagickFalse || (image->gamma < .45 || image->gamma > .46))) { @@ -10508,14 +10515,14 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, } } - if (ping_exclude_cHRM == MagickFalse) + if (ping_exclude_cHRM == MagickFalse && ping_have_sRGB == MagickFalse) { if ((mng_info->have_write_global_chrm == 0) && (image->chromaticity.red_primary.x != 0.0)) { /* Note image chromaticity. - To do: check for cHRM+gAMA == sRGB, and write sRGB instead. + Note: if cHRM+gAMA == sRGB write sRGB instead. */ PrimaryInfo bp,