使用 ImageSharp 加载和保存不透明的 8 位 PNG 文件
Load and Save opaque 8 bit PNG Files using ImageSharp
我正在尝试加载 -> 直接操作字节数组 -> 保存 8 位 png 图像。
我想使用 ImageSharp 将其速度与我当前的库进行比较,但是在他们的代码示例中,他们需要定义像素类型(他们使用 Rgba32):
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
// Image.Load(string path) is a shortcut for our default type.
// Other pixel formats use Image.Load<TPixel>(string path))
using (Image<Rgba32> image = Image.Load("foo.jpg"))
{
image.Mutate(x => x
.Resize(image.Width / 2, image.Height / 2)
.Grayscale());
image.Save("bar.jpg"); // Automatic encoder selected based on extension.
}
我查看了像素类型:https://github.com/SixLabors/ImageSharp/tree/master/src/ImageSharp/PixelFormats
但是没有灰度8位像素类型
截至 1.0.0-beta0005 没有 Gray8 像素格式,因为我们无法决定从 Rgb 转换时使用哪种颜色模型(我们内部需要)。 ITU-R Recommendation BT.709 似乎是明智的解决方案,因为这是 png 支持的内容,也是我们在将图像保存为 8 位灰度 png 时使用的内容,因此它在我的 TODO 列表中。
https://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale
所以...当前解码图像时需要使用Rgb24
或Rgba32
。
更新。
从 1.0.0-dev002094 开始,这成为可能!我们有两种新的像素格式。 Gray8
和 Gray16
仅携带像素的亮度分量。
using (Image<Gray8> image = Image.Load<Gray8>("foo.png"))
{
image.Mutate(x => x
.Resize(image.Width / 2, image.Height / 2));
image.Save("bar.png");
}
注意。默认情况下,png 编码器将以输入的颜色类型和位深度保存图像。如果您想以不同的颜色类型对图像进行编码,则需要使用 ColorType
和 BitDepth
属性集新建一个 PngEncoder
实例。
我正在尝试加载 -> 直接操作字节数组 -> 保存 8 位 png 图像。
我想使用 ImageSharp 将其速度与我当前的库进行比较,但是在他们的代码示例中,他们需要定义像素类型(他们使用 Rgba32):
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
// Image.Load(string path) is a shortcut for our default type.
// Other pixel formats use Image.Load<TPixel>(string path))
using (Image<Rgba32> image = Image.Load("foo.jpg"))
{
image.Mutate(x => x
.Resize(image.Width / 2, image.Height / 2)
.Grayscale());
image.Save("bar.jpg"); // Automatic encoder selected based on extension.
}
我查看了像素类型:https://github.com/SixLabors/ImageSharp/tree/master/src/ImageSharp/PixelFormats
但是没有灰度8位像素类型
截至 1.0.0-beta0005 没有 Gray8 像素格式,因为我们无法决定从 Rgb 转换时使用哪种颜色模型(我们内部需要)。 ITU-R Recommendation BT.709 似乎是明智的解决方案,因为这是 png 支持的内容,也是我们在将图像保存为 8 位灰度 png 时使用的内容,因此它在我的 TODO 列表中。
https://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale
所以...当前解码图像时需要使用Rgb24
或Rgba32
。
更新。
从 1.0.0-dev002094 开始,这成为可能!我们有两种新的像素格式。 Gray8
和 Gray16
仅携带像素的亮度分量。
using (Image<Gray8> image = Image.Load<Gray8>("foo.png"))
{
image.Mutate(x => x
.Resize(image.Width / 2, image.Height / 2));
image.Save("bar.png");
}
注意。默认情况下,png 编码器将以输入的颜色类型和位深度保存图像。如果您想以不同的颜色类型对图像进行编码,则需要使用 ColorType
和 BitDepth
属性集新建一个 PngEncoder
实例。