[Mono-list] Convert TIFFs to PNGs

Fabian Luque Fabian Luque <fabianluque@gmail.com>
Thu, 10 Mar 2005 20:42:14 -0300

Hi people:

I've been doing some tests for a webapp I'm developing. What I'm
trying to do is convert some B&W (1 bit) TIFFs to PNGs, to view them
on a browser.

Here's the code I'm using:

//Open TIFF and save to PNG
Bitmap original = new Bitmap("00000003.TIF");

original.Save("03.png", ImageFormat.Png);

//Resize and save to PNG
Image thumb = original.GetThumbnailImage(original.Width,
original.Height, null, IntPtr.Zero);

EncoderParameters ep = new EncoderParameters();

ep.Param[0] = new EncoderParameter(Encoder.ColorDepth, 1);

thumb.Save("03thumb.png", GetEncoder("image/png"), ep);

private static System.Drawing.Imaging.ImageCodecInfo GetEncoder(string mimeType)


	ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();

	foreach(ImageCodecInfo codec in codecs)

		if(codec.MimeType == mimeType)

			return codec;


In .NET on Windows, I get this:

03.png - 84 KB - 1 bit
03thumb.png - 320 KB - 32 bits

In Mono on Linux (NLD), I get this:

03.png - 180 KB - 32 bit
03thumb.png -  180 KB - 32 bits

In .NET it's a know issue that the PNG Encoder is not working or at
least it's not configurable when saving images.

In Mono, I'm getting a bigger filesize when opening and saving the
image to another format, and also a different ColorDepth. And it seems
it always save 32 bits PNGs.

I need to be able to save a TIFF image with and without resizing to a PNG image.

Any hints?


Fabian Luque