You can use lossless compression, for example, in the TIFF container, which can support a number of different compression algorithms, most of them are lossless. PNG supports lossless compression as well. Please see:
http://en.wikipedia.org/wiki/Portable_Network_Graphics[
^],
http://en.wikipedia.org/wiki/Tagged_Image_File_Format[
^],
http://en.wikipedia.org/wiki/Lossless_data_compression[
^].
Now, .NET classes do not support PNG compression parameters. Instead, you can consider using this library:
http://optipng.sourceforge.net/[
^].
Unfortunately, this is a C library. You can use it in your .NET projects via P/Invoke or C++/CLI (mixed mode).
You might want to search more in hope to find something better.
So, you might be better off with TIFF, as .NET FCL offers a class for TIFF support:
http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.tiffbitmapencoder%28v=vs.90%29.aspx[
^] (and later versions of .NET).
Good luck,
—SA