Как изменить размер изображения перезаписав файл

Есть метод для изменения размера картинки. Как сделать чтобы он перезаписывал файл. В данный момент он выдаёт ошибку

{"В GDI+ возникла ошибка общего вида."}

  public void ResizeImage(string fileName, int width, int height)
        {
            using (Image image = Image.FromFile(fileName))
            {
                new Bitmap(image, width, height).Save(fileName);
            }
        }

Ответы (2 шт):

Автор решения: Andrei Khotko

Из документации метода Save(string filename):

Exceptions: ExternalException

The image was saved with the wrong image format.

-or-

The image was saved to the same file it was created from.

Иными словами, метод не позволяет записывать Bitmap в тот же файл, из которого он был создан. Попробуйте сначала записать Bitmap в новый файл, затем удалить старый и переименовать новый файл.

→ Ссылка
Автор решения: Alexander Petrov

Проще всего поступить так:

Image image = Image.FromFile(fileName);
Bitmap bitmap = new Bitmap(image, width, height);
image.Dispose();
bitmap.Save(fileName);
bitmap.Dispose();

Сперва диспозим оригинальное изображение (освобождаем ресурс - хендл, связанный с ним). После чего становится возможным сохранять в тот же файл.

В конце освобождаем ресурсы, занятые новым изображением с изменённым размером.

Можно применить using, но только для второго изображения. Потому что момент освобождения первого мы должны контролировать сами.

Image image = Image.FromFile(fileName);
using (Bitmap bitmap = new Bitmap(image, width, height))
{
    image.Dispose();
    bitmap.Save(fileName);
}
→ Ссылка