From 8bb8c3d1d08a5a7fe748498819e50bcc27fd3d0c Mon Sep 17 00:00:00 2001 From: Cristy Date: Sat, 8 Sep 2018 20:41:41 -0400 Subject: [PATCH] https://github.com/ImageMagick/ImageMagick/issues/1279 --- coders/png.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/coders/png.c b/coders/png.c index 00f2d655c..4ca72e9a6 100644 --- a/coders/png.c +++ b/coders/png.c @@ -3406,6 +3406,8 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, " Reading PNG IDAT chunk(s)"); status=SetImageExtent(image,image->columns,image->rows,exception); + if (status != MagickFalse) + status=ResetImagePixels(image,exception); if (status == MagickFalse) { png_destroy_read_struct(&ping,&ping_info,&end_info); @@ -3598,7 +3600,7 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, if (pass < num_passes-1) continue; - q=QueueAuthenticPixels(image,0,y,image->columns,1,exception); + q=GetAuthenticPixels(image,0,y,image->columns,1,exception); if (q == (Quantum *) NULL) break; @@ -3707,7 +3709,12 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, break; for (x=0; x < (ssize_t) image->columns; x++) { - SetPixelIndex(image,*r++,q); + SetPixelRed(image,ClampToQuantum(image->colormap[(int) *r].red),q); + SetPixelGreen(image,ClampToQuantum(image->colormap[(int) *r].green), + q); + SetPixelBlue(image,ClampToQuantum(image->colormap[(int) *r].blue),q); + SetPixelIndex(image,*r,q); + r++; q+=GetPixelChannels(image); } @@ -3754,17 +3761,6 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, } quantum_info=DestroyQuantumInfo(quantum_info); - if (image->storage_class == PseudoClass) - { - PixelTrait - alpha_trait; - - alpha_trait=image->alpha_trait; - image->alpha_trait=UndefinedPixelTrait; - (void) SyncImage(image,exception); - image->alpha_trait=alpha_trait; - } - png_read_end(ping,end_info); if (logging != MagickFalse) -- 2.40.0