Есть метод для изменения размера картинки. Как сделать чтобы он перезаписывал файл. В данный момент он выдаёт ошибку
{"В GDI+ возникла ошибка общего вида."}
public void ResizeImage(string fileName, int width, int height)
{
using (Image image = Image.FromFile(fileName))
{
new Bitmap(image, width, height).Save(fileName);
}
}
Из документации метода 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 в новый файл, затем удалить старый и переименовать новый файл.
Проще всего поступить так:
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);
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей