]> granicus.if.org Git - imagemagick/commitdiff
...
authorCristy <urban-warrior@imagemagick.org>
Sat, 15 Jun 2019 01:53:18 +0000 (21:53 -0400)
committerCristy <urban-warrior@imagemagick.org>
Sat, 15 Jun 2019 01:53:18 +0000 (21:53 -0400)
coders/dib.c

index 72578f108ae41d32f781232488514861912c43a7..aa93c4a7adfffc8fe51c7af37614d39a4320e47c 100644 (file)
@@ -930,8 +930,6 @@ static Image *ReadDIBImage(const ImageInfo *image_info,ExceptionInfo *exception)
       /*
         Handle ICO mask.
       */
-      image->storage_class=DirectClass;
-      image->alpha_trait=BlendPixelTrait;
       for (y=0; y < (ssize_t) image->rows; y++)
       {
         register ssize_t
@@ -947,15 +945,23 @@ static Image *ReadDIBImage(const ImageInfo *image_info,ExceptionInfo *exception)
         {
           c=ReadBlobByte(image);
           for (bit=0; bit < 8; bit++)
+          {
+            if (c & (0x80 >> bit))
+              image->alpha_trait=BlendPixelTrait;
             SetPixelAlpha(image,c & (0x80 >> bit) ? TransparentAlpha :
               OpaqueAlpha,q+x*GetPixelChannels(image)+bit);
+          }
         }
         if ((image->columns % 8) != 0)
           {
             c=ReadBlobByte(image);
             for (bit=0; bit < (ssize_t) (image->columns % 8); bit++)
+            {
+              if (c & (0x80 >> bit))
+                image->alpha_trait=BlendPixelTrait;
               SetPixelAlpha(image,c & (0x80 >> bit) ? TransparentAlpha :
                 OpaqueAlpha,q+x*GetPixelChannels(image)+bit);
+            }
           }
         if (image->columns % 32)
           for (x=0; x < (ssize_t) ((32-(image->columns % 32))/8); x++)