簡體   English   中英

使用FileStream或Simple Bitmap在c#中更新后未保存圖像

[英]Image is not saving after updating, in c# using FileStream or Simple Bitmap

我正在為桌面應用程序中的某個實用程序工作,該實用程序與某些圖形工作有關。

我必須加載小的縮略圖和完整的位圖,我正在使用此代碼進行此操作。

 FileStream fs = new FileStream("myphoto.jpg", FileMode.Open);
 Image imgPhoto = Image.FromStream(fs);
 fs.Close();
 PictureBox p = new PictureBox();
 p.Name = "p1";
 p.Image = imgPhoto;
 flowPanel.Controls.Add(p);
 //---- 
 FileStream fs = new FileStream("myphoto_thumb.jpg", FileMode.Open);
 Image img = Image.FromStream(fs);
 fs.Close();
 Button b_thumb = new Button();
 b_thumb.Name = "thumb1";
 b_thumb.BackgroundImage = img;
 flowBottom.Controls.Add(b_thumb);

之后,我需要在此圖片框的圖像上添加一些效果。當我向圖片框中的主(大)圖像添加一些效果時,我也會在botton背景圖像中添加相同的效果。當我將此縮略圖保存到現有的縮略圖中時它正在保存,但是當我將Picturebox中的大圖像保存在現有文件“ myphoto.jpg”上時,它給了我錯誤,例如文件正在由其他過程使用

//---- Add some Effects to image of Picturebox ---- //
PictureBox tempPic = flowPanel.Controls["p1"];
tempPic.Image.Save("myphoto.jpg",ImageFormat.Jpeg);

我在Google和stackoverflow上找到了許多解決方案,但找不到幫助。 如果有任何好的解決方案,請幫助。 可能很簡單,但我嘗試了十多個小時,但失敗了。

您不會關閉打開的FileStream。 我總是將這種東西包裝在一個using構造中,因此它會自動被破壞,從而關閉:

using (FileStream fs = new FileStream("myphoto.jpg", FileMode.Open)) {
  // Do stuff
}

tempPic.Image.Save("myphoto.jpg",ImageFormat.Jpeg);

嘗試將文件流設置為只讀:

fs = New System.IO.FileStream("myphoto.jpg", 
     IO.FileMode.Open, IO.FileAccess.Read)

這是Microsoft的建議,針對嘗試Image.FromFile並鎖定文件的用戶: http : //support.microsoft.com/kb/309482

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM