Discussion:
Forcing PNG save as 8 bit RGBA
Tony Howat
2010-10-14 11:45:36 UTC
Permalink
Hi list,

I'm doing some horrible work creating overlays for a version of libavfilter
which will only deal with 8 bit RGBA PNGs using ImageMagick-6.6.4-9

I have some magickwand code doing what I need in general, I had no problem
forcing 8 bit output but it insists on optimising to Grey+Alpha PNG. It's
obviously perfectly reasonable for this to happen - but I don't want it to.

MagickSetImageFormat(m_wand,"PNG8");
MagickSetImageDepth(m_wand,8);
MagickWriteImage(m_wand,output);

gives PNG image data, 8-bit gray+alpha, non-interlaced

MagickSetImageFormat(m_wand,"PNG8");
MagickSetImageDepth(m_wand,8);
MagickSetImageType(m_wand,(ImageType)TrueColorType);
MagickWriteImage(m_wand,output);

gives PNG image data, 8-bit grayscale, non-interlaced

MagickSetImageFormat(m_wand,"PNG8");
MagickSetImageDepth(m_wand,8);
MagickSetImageType(m_wand,(ImageType)PaletteType);
MagickWriteImage(m_wand,output);

gives PNG image data, 1-bit grayscale, non-interlaced

I must be missing something here? Is there a nice way to achieve what I'm
after without hacking ImageMagick to bits?

Thanks,

--
Tony

Loading...