2011-04-10 105 views
2

我有我已經調整圖像陣列,我想要做的就是直接將它們保存在數組...C#保存圖像從Array

foreach (Image I in Resizedimages) 
      { 
       string f = Environment.GetFolderPath(Environment.SpecialFolder.Desktop).ToString() + "\\NewImages\\" + names[n]; 

       I.Save(f, System.Drawing.Imaging.ImageFormat.Jpeg); 
       n++; 

      } 

的問題是我每次運行程序我得到一個未處理的異常「在GDI +中發生了一個通用錯誤」,並且我知道這是與保存方法有關的事實。我以前曾經問過這個問題,如果是這種情況,那麼我很抱歉。在網上搜索了幾個小時後,我嘗試了許多不同的修復方法,我認爲這可能與我的程序有關。有任何想法嗎?

+1

看到:

 Bitmap copy = new Bitmap(I); copy.Save(f, System.Drawing.Imaging.ImageFormat.Jpeg); 

爲了避免GDI文件鎖定,你可以從一個MemoryStream創建圖像這個女士KB http://support.microsoft.com/?id=814675 – 2011-04-10 00:11:20

+0

首先,我希望n被調到零。估計我會說Resizeimages中的圖像是錯誤的。 – 2011-04-10 00:12:26

+0

我已經說過,除了保存方法之外,問題不在代碼中的任何地方,並且是0。沒有任何錯誤的Resizedimages。 – Zizo47 2011-04-10 00:16:35

回答

0

問題可能在於被Bitmap對象或Graphics對象鎖定的東西。調用的東西Dispose()可能工作或者你可以複製到一個新的位圖,保存:

 MemoryStream stream = new MemoryStream(File.ReadAllBytes(fileName)); 
     Image image = Image.FromStream(stream); 
+0

製作圖像的副本並未停止該錯誤。流的想法是從一個路徑獲取圖像,這是行不通的,因爲我只有一個數組中的圖像,我只需要保存它。 – Zizo47 2011-04-10 00:47:39

+0

其他要嘗試的事情是在保存和/或保存到Stream之前處理Graphics對象,而不是指定文件名。 – 2011-04-10 00:52:29

+0

我聽說過處理解決方案,但我一直讓圖像爲空,所以我認爲我做錯了。小心解釋我該如何去做這件事? – Zizo47 2011-04-10 01:00:19