使用ImageSharp将Image <Rgba32>转换为Byte []

dud*_*dev 3 imagesharp

如何使用ImageSharp库将图像转换为字节数组?

ImageSharp库是否也可以根据EXIF方向建议/提供RotateMode和FlipMode?

Jam*_*uth 6

如果您要将原始像素转换为a,byte[]请执行以下操作.

var bytes = image.SavePixelData()
Run Code Online (Sandbox Code Playgroud)

如果您希望将编码流转换为byte[](我怀疑您正在寻找的).你做这个.

using (var ms = new MemoryStream())
{
    image.Save(ms, imageFormat);
    return ms.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

  • 伟大的。你能标记答案然后请满足我的强迫症。 (3认同)
  • 对于后来出现的人:请注意,image.SavePixelData()函数已替换为image.GetPixelSpan(),它返回像素类型的Span <T>(然后可以将其转换为带.ToArray()的数组如果需要的话). (3认同)
  • @马吉德;为了访问“Ge​​tPixelSpan”,应该添加“using SixLabors.ImageSharp.Advanced;”(我花了几分钟才弄清楚为什么 VS 找不到这个方法......) (3认同)
  • `GetPixelSpan()` 返回 `Span&lt;Rgba32&gt;`,因此 `ToArray()` 将返回 `Rgba32[]`。要拥有 `byte[]`,你可以使用 `MemoryMarshal.AsBytes(image.GetPixelSpan()).ToArray()` (2认同)