2016-10-19 16 views
-2

System.Drawing.Imageをファイルに保存しようとしています。C#画像を保存するときのGDI +の一般的なエラー

これは私のコードです:RoundedImage.Save(...);ラインで

using(WebClient webClient = new WebClient()) 
     webClient.DownloadFile(new Uri(defaultPic), defaultPicPath); 

    var tempImg = System.Drawing.Image.FromFile(defaultPicPath); 
    using(System.Drawing.Image RoundedImage = RoundCorners(tempImg, 90, System.Drawing.Color.Transparent)) { 
     RoundedImage.Save(defaultPicPath); 
     tempImg.Dispose(); 
    } 

、私はエラーにGDI +で

一般エラーを取得しています。

ファイルがWPFコントロールまたは画像によってロックされていないことは間違いありません。

ご了承ください。

ありがとうございます!

+0

RoundedImage.Save(...)メソッドに異なるパスを指定するとどうなりますか? –

+0

https://www.google.co.in/search?sourceid=chrome-psyapi2&ion=1&espv=2&ie=UTF-8&q=General%20Error%20in%20GDI%2B&oq=General%20Error%20in%20GDI%2B&aqs=chrome ..69i57j0l3j69i60.704j0j7 –

+0

@ krw12572申し訳ありませんが、それを忘れてしまった。別のパスobv。私はイメージを上書きしようとしています。私はちょうどそれをhackishし、その後元のファイルを上書きします。 –

答えて

-1

あなたのコードからわかるように、あなたはファイルを公開していません。

あなたは、

  1. まず画像を読み込み、それをローカルの深いコピー(tempImage)を作成する必要があります。 (注意:Cloneメソッドを使用して浅いコピーは動作しません。)

  2. イメージファイルを解放します。

  3. ローカルコピーを変更してください。

  4. 元のファイルを上書きします。

  5. 廃棄する場合は地方自治体のコピー(tempImage)。

次に試してください。

Image tempImage; 
using(var img = System.Drawing.Image.FromFile(defaultPicPath)) 
    tempImage=new Bitmap(img); 

using(System.Drawing.Image RoundedImage = RoundCorners(tempImg, 90, System.Drawing.Color.Transparent)) 
    RoundedImage.Save(defaultPicPath); 
tempImg.Dispose(); 
+0

なぜdownvote ??? –

関連する問題