2010-11-22 55 views
1

我得到一個參數無效exception..While保存圖像參數無效例外

這裏是我的代碼保存圖像

if (!File.Exists(pictureBox1.Tag.ToString())) 
{ 
    Image image = pictureBox1.Image; 
    image.Save(pictureBox1.Tag.ToString(), ImageFormat.Jpeg); 
} 
else 
{ 
    string delStr = pictureBox1.Tag.ToString(); 
    pictureBox1.Image.Dispose(); 
    File.Delete(delStr); 
    Image image = pictureBox1.Image; 
    image.Save(delStr, ImageFormat.Jpeg); 
    pictureBox1.Image = Image.FromFile(delStr); 
} 
+1

請提供有關異常的更多詳細資料(全消息等)*和*來自「if/else」語句的哪個分支。 – 2010-11-22 12:28:10

+0

我得到的錯誤在image.save()...我想保存圖像的同名 – Daksh 2010-11-22 12:35:24

回答

1

是我看花眼是否正確?在保存圖像之前是否要處理圖像?如果是的話這裏是你的問題:

pictureBox1.Image.Dispose(); // THIS !!!!!! Just remove this line or move it to after save 
Image image = pictureBox1.Image; 
image.Save(delStr, ImageFormat.Jpeg); 
+0

如果我不處理它...它給了我錯誤,我不能刪除它,因爲它是由一些過程...我想要做的就是用相同的名稱保存圖像,即不保存文件對話框 – Daksh 2010-11-22 12:34:40

+0

@Hasan你能否給我們一些理解?你還沒有告訴我們哪個參數給你提供了錯誤。 – 2010-11-22 12:41:00

+0

image.Save(delStr,ImageFormat.Jpeg)我在這裏得到錯誤 – Daksh 2010-11-22 12:46:48

3

在你else分支,你開始在您的通話ImageDispose(),然後嘗試將其保存。這不可能工作,因爲:

Dispose法葉 不可用狀態的Image

也許你想做的事:

string delStr = pictureBox1.Tag.ToString(); 
File.Delete(delStr); 
Image image = pictureBox1.Image; 
image.Save(delStr, ImageFormat.Jpeg); 
image.Dispose(); 
pictureBox1.Image = Image.FromFile(delStr); 

但是,這仍然重裝從一文件,它剛剛被保存到Image,所以它不是非常有用的。你可能會想嘗試類似:

string filename = pictureBox1.Tag.ToString(); 
if (File.Exists(filename) { 
    File.Delete(filename); 
} 
pictureBox1.Image.Save(filename, ImageFormat.Jpeg); 

但話又說回來,Image.Save()無論如何都會覆蓋該文件......所以,你只需要做:

pictureBox1.Image.Save(pictureBox1.Tag.ToString(), ImageFormat.Jpeg); 
+0

進程無法訪問文件'C:\ Documents and Settings \ All Users \ Documents \ My Pictures \ Sample Pictures \ Test.jpg',因爲它是被另一個進程使用。 – Daksh 2010-11-22 12:41:12

+0

現在我得到這個錯誤 – Daksh 2010-11-22 12:46:14

+0

@hasan,也許你在運行你的程序時在某個編輯器中打開了圖像文件? – 2010-11-22 12:54:48