这样的编码器存在吗?GDI+ 的功能不是很全。例如,它总是会渲染出 32bpp 的图像,即使您使用的是 8bpp 的内存索引。
我即将开始从 Web 服务器上写出很多 PNG,这些 PNG 应该是 8bpp 的透明索引(PNG 支持调色板中的 alpha 级别)。出于性能原因,我想使用本机 .NET(和不安全的代码)来执行此操作,因此请不要建议ImageMagick或FreeImage。
使用 PngBitmapEncoder 类,它在幕后使用 WIC。FormatConvertedBitmap 类帮助您设置调色板并进行像素格式转换。至少需要 .NET 3.0。
您还可以在http://nquant.codeplex.com查看 nQuant 。如果您将 GDI+ 32 位位图实例传递给它,它将返回一个 8 位 256 色索引调色板图像。如果原始图像是 8 位,则此转换应该是无损的。
这是一个没有依赖关系的香草 C# 编写的库。