关于GDI+错误的修正

在Image转化为字节转时,代码如下:

MemoryStream ms=new MemoryStream();
      Bitmap t = new Bitmap(dm.Photo);//dm.Photo为Image对象,dm.Photo=this.pictrurBox1.Image;
     
      dm.Photo.Save(ms,dm.Photo.RawFormat);//此处出错.
      byte[] arrImage=ms.GetBuffer();
      ms.Close();

发生了"GDI+ 中发生一般性错误"的错误,经过查找,才知道:"Bitmap 对象或一个 图像 对象从一个文件, 构造时该文件仍保留锁定对于对象的生存期。 因此, 无法更改图像并将其保存回它产生相同的文件。"(出自于Microsoft网站),应该是对象引用与对象的生存期的问题,那么就创建一个一模一样的副本,然后再对副本进行操作,代码如下:

MemoryStream ms=new MemoryStream();
      Bitmap t = new Bitmap(dm.Photo);//创建副本
      t.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); //对副本进行操作
      byte[] arrImage=ms.GetBuffer();
      ms.Close();

原文地址:https://www.cnblogs.com/liubo68/p/2757723.html