Hi All,
Some recent versions of ImageMagick have seen some changes to the .ico handling
code to support reading 32 bit .ico files which contain a real alpha channel
instead of an alpha 0/1 bitmask.
These changes have broken support for reading 24 bpp + alpha bitmask .ico
files, by trying to read an alpha channel there, leading to an early eof.
This patch restores the reading of 24 bit .ico files, by not trying to read an
alpha channel there, but instead use the alpha bitmask as ImageMagicke did a
couple of releases ago.
And yes this patch is against a sligthly old version of ImageMagick, but the
bug is still present in svn trunk.
Regards,
Hans
diff -up ImageMagick-6.3.8/coders/icon.c~ ImageMagick-6.3.8/coders/icon.c
--- ImageMagick-6.3.8/coders/icon.c~ 2008-04-01 17:30:58.000000000 +0200
+++ ImageMagick-6.3.8/coders/icon.c 2008-04-01 17:30:58.000000000 +0200
@@ -501,7 +501,7 @@ static Image *ReadICONImage(const ImageI
q->blue=ScaleCharToQuantum((unsigned char) ReadBlobByte(image));
q->green=ScaleCharToQuantum((unsigned char) ReadBlobByte(image));
q->red=ScaleCharToQuantum((unsigned char) ReadBlobByte(image));
- if (image->matte != MagickFalse)
+ if (icon_info.bits_per_pixel == 32)
q->opacity=(Quantum) QuantumRange-ScaleCharToQuantum(
(unsigned char) ReadBlobByte(image));
q++;
@@ -527,7 +527,7 @@ static Image *ReadICONImage(const ImageI
ThrowReaderException(CorruptImageError,"ImproperImageHeader");
}
(void) SyncImage(image);
- if (icon_info.bits_per_pixel <= 16)
+ if (icon_info.bits_per_pixel != 32)
{
/*
Read the ICON alpha mask.
_______________________________________________
Magick-bugs mailing list
[email protected]
http://studio.imagemagick.org/mailman/listinfo/magick-bugs