7

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

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

4

2 回答 2

13

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

var bytes = image.SavePixelData()

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

using (var ms = new MemoryStream())
{
    image.Save(ms, imageFormat);
    return ms.ToArray();
}
于 2018-05-02T05:38:28.990 回答
3

对于那些关注 2020 年的人:

SixLabors 似乎喜欢更改命名和添加抽象层,所以... 现在要获取原始字节数据,请执行以下步骤。

  1. 使用方法获取MemoryGroup图像。GetPixelMemoryGroup()
  2. 将其转换为数组(因为GetPixelMemoryGroup()返回一个接口)并获取第一个元素(如果有人告诉我他们为什么这样做,我将不胜感激)。
  3. System.Memory<TPixel>得到一个Span然后以旧方式做事。(我更喜欢@Majid 评论的解决方案)

所以代码看起来像这样:

var _IMemoryGroup = image.GetPixelMemoryGroup();
var _MemoryGroup = _IMemoryGroup.ToArray()[0];
var PixelData = MemoryMarshal.AsBytes(_MemoryGroup.Span).ToArray();

ofc 您不必将其拆分为变量,您可以在一行代码中执行此操作。我这样做只是为了澄清目的。此解决方案仅适用于 2020 年 9 月 6 日

于 2020-09-05T21:42:18.270 回答