C# GDI + ошибка при сохранении растрового изображения из списка в файл - PullRequest
0 голосов
/ 24 января 2020

В настоящее время я извлекаю данные VARBINARY из базы данных sql, преобразовываю их в BITMAP и затем добавляю каждый из них в объект списка.

Однако, когда я пытаюсь сохранить каждое из изображений в В приведенном выше списке я получаю обобщенное c GDI + исключение для функции image.save.

Что я пробовал: - Изменение пути (Путь в настоящее время C: \ Temp для тестирования) - Проверка разрешений (путь имеет полное разрешение) - Изменение из списка BITMAP в список ИЗОБРАЖЕНИЯ - Изменение ImageFormat функции сохранения - Установка EncodingQuality функции сохранения

Изображение 0 КБ создается в правильном каталоге с правильным именем, поэтому не Я уверен, что причина проблемы.

Ниже приведен мой код для сохранения:

public void doImport(List<Bitmap> images, string certNo, string saveLoc, ListView.ListViewItemCollection items) {
        string path = String.Format("{0}\\{1}", saveLoc, certNo);

        if ( !Directory.Exists(path) ) { Directory.CreateDirectory(path); }

        for ( int i = 0; i < items.Count; i++ ) {
            Bitmap image = images[i];
            string imgPath = String.Format("{0}\\{1}\\{1}-{2}.jpg", saveLoc, certNo, items[i].Text);

            try {
                image.Save(imgPath, ImageFormat.Jpeg);
                if ( File.Exists(imgPath) ) { images.Remove(image); }
            } catch (Exception ex) {
                MessageBox.Show(String.Format("Warning: Could not save image: {0}, it has been skipped.\n\n{1}", items[i].Text, ex.Message), 
                    "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
    }

Спасибо

1 Ответ

2 голосов
/ 24 января 2020

Простое исправление после прочтения нескольких похожих вопросов. Только что изменили эту строку:

for ( int i = 0; i < items.Count; i++ ) {
        Bitmap image = images[i];

К этой строке:

for ( int i = 0; i < items.Count; i++ ) {
        Bitmap image = new Bitmap(images[i]);

Спасибо:)

...