В gdi возникла ошибка общего вида

Необработанное исключение типа "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 .

Также неясно, зачем метод сделан статическим.

Оцените статью
Добавить комментарий