]> granicus.if.org Git - imagemagick/commitdiff
Make png encoder respect -define png:colortype=2 for PseudoClass image.
authorglennrp <glennrp@git.imagemagick.org>
Fri, 19 Aug 2011 02:31:16 +0000 (02:31 +0000)
committerglennrp <glennrp@git.imagemagick.org>
Fri, 19 Aug 2011 02:31:16 +0000 (02:31 +0000)
coders/png.c

index 5f38c2dd8a68026cfa908848817d20ccd59c1add..7aa749b91d5b6ad08a56347c7fd928d4ad23591b 100644 (file)
@@ -7612,6 +7612,15 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info,
           "    storage_class=PseudoClass");
     }
 
+  if (image->storage_class == PseudoClass && 
+     (mng_info->write_png8 || mng_info->write_png24 || mng_info->write_png32 ||
+     (mng_info->write_png_colortype != 0 &&
+     mng_info->write_png_colortype != 4)))
+    {
+      (void) SyncImage(image);
+      image->storage_class = DirectClass;
+    }
+
   if (ping_preserve_colormap == MagickFalse)
     {
       if (image->storage_class != PseudoClass && image->colormap != NULL)
@@ -9040,13 +9049,13 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info,
       }
     } /* end of write_png8 */
 
-  else if (mng_info->write_png24)
+  else if (mng_info->write_png24 || mng_info->write_png_colortype == 3)
     {
       image_matte=MagickFalse;
       ping_color_type=(png_byte) PNG_COLOR_TYPE_RGB;
     }
 
-  else if (mng_info->write_png32)
+  else if (mng_info->write_png32 || mng_info->write_png_colortype == 7)
     {
       image_matte=MagickTrue;
       ping_color_type=(png_byte) PNG_COLOR_TYPE_RGB_ALPHA;