使用图像锐利度保存两个颜色索引(1bpp)PNG

时间:2018-09-25 11:28:33

标签: imagesharp

我在ASP.Net Core项目中使用Image Sharp,现在需要为只能处理2个彩色索引PNG图像的设备准备PNG图像。

如果使用以下代码,则图像将另存为调色板2色图像,但结果损坏,在我看来没有发生像素堆积。

private void ConvertToMonoPng(Stream stream, string fileName)
{
    Image<Rgba32> image = Image.Load(fileName);

    PngEncoder enc = new PngEncoder();
    enc.CompressionLevel = 9;
    enc.ColorType = PngColorType.Palette;
    enc.BitDepth = PngBitDepth.Bit1;

    image.Save(stream, enc);
    image.Dispose();
}

结果是:

源图像

Source image

输出图像

Output image

我知道ImageSharp库当前不支持内存中的亚字节压缩像素,但是由于PNGEncoder中似乎确实有一些支持,所以我希望支持保存单色PNG,而我只是做错了事。

1 个答案:

答案 0 :(得分:2)

从版本1.0.0-dev001921开始,这已经成为可能。我添加了对1,2和4位编码的支持,以与现有的8位和16位编码一起使用。

您可以使用以下命令通过每晚的MyGet提要安装软件包。

PM> Install-Package SixLabors.ImageSharp -Version 1.0.0-dev001921 -Source 
https://www.myget.org/F/sixlabors/api/v3/index.json

这是输出。

1位调色板

1 bit palette

2位调色板

2 bit palette

4位调色板

4 bit palette

1位灰度

1 bit grayscale

2位灰度

2 bit grayscale

4位灰度

4 bit grayscale