儲存來自MemoryStream的影像資料

  • 3756
  • 0

摘要:儲存來自MemoryStream的影像資料

最近要將Bitmap從Client傳到Server端,然後在Server端將該影像儲存時,老是會出現GDI+ 中發生泛型錯誤

google了一下,有人說是串流被關閉了,資料也就沒有了,所以才會出現該錯誤。

我試了一下的程式碼

Client

Image img = Image.FromFile("C:\\abc.bmp");

MemoryStream ms = new MemoryStream();

img.Save(ms, ImageFormat.bmp);

然後將ms.GetBuffer()所得到的byte[]傳到Server端。

Server端收到byte[]以後再利用MemoryStream建成Bitmap如下

MemoryStream ms = new MemoryStream();

ms.Write(byteArray, 0, byteArray.Length);

Image img = Image.FromStream(ms);

PictureBox.Image = img; //work

img.Save("c:\\test.bmp"); //會造成GDI+ 中發生泛型錯誤

要改成下面這樣子就不會有錯誤了

Image img = Image.FromStream(ms);

Bitmap bmp = new Bitmap(img); //建立複本

PictureBox.Imae = bmp;

bmp.Save("c:\\test.bmp"); //這樣子就不有出現例外了。

============ 以下是簽名檔 ============

一個小小螺絲釘。

第一次建立Blog,希望以後能慢慢充實它。

Howard