2016-10-19 4 views
-2

Я пытаюсь сохранить файл System.Drawing.Image в файл.C# Общая ошибка в GDI + при сохранении изображения

Это мой код:

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(); 
    } 

В RoundedImage.Save(...); линии, я получаю сообщение об ошибке

Общая ошибка в 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. работает, я пытаюсь перезаписать изображение. Я просто сделаю это взломать и перезаписать исходный файл позже. –

ответ

-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 ??? –

Смежные вопросы