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

时间:2018-04-25 15:18:33

标签: imagesharp

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

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

3 个答案:

答案 0 :(得分:6)

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

var bytes = image.SavePixelData()

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

using (var ms = new MemoryStream())
{
    image.Save(ms, imageFormat);
    return ms.ToArray();
}

答案 1 :(得分:2)

在第二个问题上:有一个名为AutoOrient()的转换API函数。查一查;)

答案 2 :(得分:2)

对于2020年以后的人:

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

  1. 使用@Document @CompoundIndex(name = "group-name", def = "{'group':1, 'name':1}", unique = true) // Requires auto-index-creation in application.properties public class Book { @Id private String _id; private String group; private String name; private String value; public Book() { } public Book(String group, String name, String value) { this.group = group; this.name = name; this.value = value; } @Override public String toString() { StringBuilder s = new StringBuilder('['); s.append("_id=").append(_id); s.append(", group=").append(group); s.append(", name=").append(name); s.append(", value=").append(value); s.append(']'); return s.toString(); } public String get_id() { return _id; } public String getGroup() { return group; } public void setGroup(String group) { this.group = group; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } 方法获取MemoryGroup的图像。
  2. 将其转换为数组(因为GetPixelMemoryGroup()返回一个接口)并获取第一个元素(如果有人告诉我他们为什么这样做,我将不胜感激)。
  3. GetPixelMemoryGroup()中获得一个System.Memory<TPixel>,然后以旧的方式进行操作。 (我更喜欢@Majid评论中的解决方案)

所以代码看起来像这样:

Span

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