在Core 2.1中将byte []转换为位图

时间:2018-09-11 08:11:16

标签: c# .net-core

我在.Net 4.6.2中有一个很好的项目,该项目大量使用了将byte []转换为Bitmap的功能。

public static Bitmap ByteArrayToImage(byte[] source)
    {
        TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap));
        return (Bitmap)tc.ConvertFrom(source);
    }

但是,自那以后,我已经将项目升级到.Net Core 2.1,并且这不再起作用。我读过,有些人有问题,但是努力寻找解决办法。

  

TypeConverter无法从System.Byte []

转换

2.1中是否有实现此转换的方法? 看来https://github.com/SixLabors/ImageSharp可能有用,但是当我在Nuget中搜索它时,没有任何结果。

2 个答案:

答案 0 :(得分:4)

您需要将bytes放入MemoryStream

public static Bitmap ByteArrayToImage(byte[] source)
{
    using (var ms = new MemoryStream(source))
    {
        return new Bitmap(ms);
    }
}

上面的代码将使用Bitmap(Stream stream)构造函数。

答案 1 :(得分:0)

  

2.1中是否有实现此转换的方法?看来https://github.com/SixLabors/ImageSharp可能有用,但是当我在Nuget中搜索它时,没有任何结果。

是的,您可以使用此开放源代码解决问题,但不能通过nuget获得它。目前,您需要MyGet才能获得该软件包。您可以参考以下链接来了解如何使用ImageSharp软件包:https://blogs.msdn.microsoft.com/dotnet/2017/01/19/net-core-image-processing/

否则,您可以先将字节数组转换为MemoryStream:

    public static Bitmap ByteArrayToImage(byte[] source)
    {
        return new Bitmap(new MemoryStream(source));
    }