C # Сохранение изображений из массива - PullRequest
2 голосов
/ 10 апреля 2011

У меня есть массив изображений, размер которых я изменил, и я пытаюсь сохранить их прямо из массива ...

foreach (Image I in Resizedimages)
            {
                string f = Environment.GetFolderPath(Environment.SpecialFolder.Desktop).ToString() + "\\NewImages\\" + names[n];

                I.Save(f, System.Drawing.Imaging.ImageFormat.Jpeg);
                n++;

            }

Проблема в том, что КАЖДЫЙ РАЗ я запускаю полученную программунеобработанное исключение «Произошла общая ошибка в GDI +», и я точно знаю, что это как-то связано с методом сохранения.Я предполагаю, что этот вопрос задавался ранее, и если это так, то извините.Я пробовал много разных исправлений после нескольких часов поиска в Интернете и подумал, что это может быть связано с моей программой.Есть идеи?

1 Ответ

0 голосов
/ 10 апреля 2011

Возможно, проблема в том, что что-то заблокировано либо объектом Bitmap, либо объектом Graphics.Вызов Dispose() для чего-либо может сработать, или вы можете просто скопировать в новое растровое изображение и сохранить его:

       Bitmap copy = new Bitmap(I);
       copy.Save(f, System.Drawing.Imaging.ImageFormat.Jpeg);

Чтобы избежать блокировки файлов с помощью GDI, вы можете создать изображение из MemoryStream:

       MemoryStream stream = new MemoryStream(File.ReadAllBytes(fileName));
       Image image = Image.FromStream(stream);
...