Необработанное исключение типа "System.Runtime.InteropServices.ExternalException" в System.Drawing.dllДополнительные сведения: В GDI+ возникла ошибка общего вида.
В GDI+ возникла ошибка общего вида
Я загрузил изображение в Picture Box, используя:
и я сохраняю его, используя:
Он отлично работает при создании нового файла, но когда я пытаюсь заменить существующее изображение, я получаю следующую ошибку времени выполнения:
Итак, что я могу сделать, чтобы решить эту проблему?
Что, поскольку файл изображения используется вашим picturebox1.Image , попробуйте сохранить его в другом пути к файлу:
Изменить: Вы также можете добавить копию с изображения в первую очередь, например:
Метод FromFile блокирует файл, поэтому для чтения изображения используйте метод Image.FromStream():
Затем сохраните, как раньше.
Это также может произойти, если путь не существует.
Вы можете создать директорию с помощью:
Если либо объект Bitmap, либо объект Image сконструирован из файла, файл остается заблокированным для времени жизни объекта. В результате вы не можете изменить изображение и сохранить его обратно в тот же файл, в котором он был создан. http://support.microsoft.com/? >
Общая ошибка произошла в GDI +, JPEG-изображении в MemoryStream:
EDIT: Просто запись из памяти. Сохранение "посреднику" MemoryStream должно работать:
Например, замените это:
Так же, как @Jalal Aldeen Saa’d сказал, что окно с картинками использует файл и заблокировано из замены файла.
попробуйте это, он будет работать
Это также может произойти, если вы забыли добавить имя файла:
И может быть исправлено добавлением имени файла:
Примечание. Фактически вам не нужно добавлять расширение для его работы.
В GDI+ произошла общая ошибка
Я также столкнулся с той же проблемой. Я пробовал так много способов, чтобы исправить эту проблему. Наконец, я нашел место, где я ошибся. Проблема в том, что я использовал пространство в пути к файлу, что недопустимо. Теперь он работает нормально после удаления пробела перед C после апострофа:
вместо этого. я использовал ниже одного.
Незначительная ошибка, но потребовалось много времени, чтобы найти и исправить ее.
Обратите внимание, что изображения, созданные с помощью Image.Clone(), по-прежнему будут вызывать ошибки GDI+, как показано в приведенном ниже коде BAD, вы должны использовать метод Image.FromStream() для чтения изображения, как показано в решении на этой странице.
Посмотрите другие вопросы по меткам c# bitmap gdi+ или Задайте вопрос
При сохранении измененного изображения получаю ошибку:
System.Runtime.InteropServices.ExternalException: "В GDI+ возникла ошибка общего вида."
Нужно чтобы при первом вызове создавался файл с измененным изображением, при последующих — перезаписывался. Пробовал сохранять в другие места и без указания формата:
В итоге такая же ошибка. Чем это может быть вызвано?
1 ответ 1
Такая ошибка может возникнуть в том случае, если пытаться сохранять в уже открытый файл. То есть ресурс "Test2.jpg" ранее был открыт и не освобождён.
Так что ищите в своём коде, где у вас ещё используется "Test2.jpg" (и не освобождается при этом).
У вас не используются Dispose / using . Покажу, как должен выглядеть правильный код. Заодно поправил нейминг.
Вообще, stringFormat вполне можно убрать, т. к. ему не задаются параметры, отличные от дефолтных.
RectangleF не является disposable , поэтому его не нужно заключать в using .
Также неясно, зачем метод сделан статическим.