我在.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中搜索它时,没有任何结果。
答案 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));
}