我在 ASP.Net Core 项目中使用 Image Sharp,现在需要为只能处理 2 个颜色索引 PNG 图像的设备准备 PNG 图像。
如果我使用以下代码,则图像将保存为托盘 2 色图像,但结果已损坏,在我看来,没有发生像素打包。
private void ConvertToMonoPng(Stream stream, string fileName)
{
Image<Rgba32> image = Image.Load(fileName);
var enc = new PngEncoder();
enc.CompressionLevel = PngCompressionLevel.Level9;
enc.ColorType = PngColorType.Palette;
enc.BitDepth = PngBitDepth.Bit1;
image.Save(stream, enc);
image.Dispose();
}
结果是:
源图像
输出图像
我知道 ImageSharp 库目前不支持内存中的子字节打包像素,但是由于 PNGEncoder 中似乎确实有一些支持,我希望支持保存单色 PNG,我只是做错了.