Forcing PNG save as 8 bit RGBA

Tony Howat <[email protected]> Thu, 14 Oct 2010 12:45:36 +0100
Newsgroups gmane.comp.video.image-magick.user
Message-ID <[email protected]>
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