从字节数组中获取Image对象

Dan*_*ams 15 .net gdi+ image

我有一个图像的字节数组(存储在数据库中).我想创建一个Image对象,创建几个不同大小的图像并将它们存储回数据库(将其保存回字节数组).

我并不担心数据库部分或调整大小.但有没有一种简单的方法来加载Image对象而不将文件保存到文件系统,然后在我调整大小时将其放回到字节数组中?如果可以的话,我想在记忆中做到这一点.

Something like:
Image myImage = new Image(byte[]);
or
myImage.Load(byte[]);
Run Code Online (Sandbox Code Playgroud)

Dav*_*kle 26

您将使用MemoryStream执行此操作:

byte[] bytes;
...
using (var ms = new System.IO.MemoryStream(bytes)) {
   using(var img = Image.FromStream(ms)) {
      ...
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 这个答案并不完全正确,您正在从流中读取图像并随后关闭此流.根据MSDN,您必须在图像的生命周期内保持流打开.对于某些图像格式(并非所有图像格式),您肯定需要这样.所以正确的方法是从加载的图像中创建新的Bitmap,然后将它们都配置为流和原始图像. (8认同)