Есть метод для изменения размера картинки. Как сделать чтобы он перезаписывал файл. В данный момент он выдаёт ошибку
{"В 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);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В общем, дело было так: Все прекрасно работало до тех пор, пока не обновил Visual Studio и не столкнулся с проблемами, когда Visual Studio не понимала синтаксис...
Собрал небольшое консольное приложениеПод Windows компилируется без проблем
Занимаюсь локализацией проекта основу взял здесьТестовый проект сработал полностью вопросов нет, но при переносе в свой проект в дизайнере...