Закончил программку(курсовой) по работе с изображениями... возникла небольшая проблема с сохранением(с заменой существующего из-ия). Сохранить как - работает, все четко, все отлично... а вот замена, что то не получается.... Вот исходники двух методов (загрузки изображения и пересохранения): Code: public void LoadImage() { openFileDialog.Filter = "Изображение JPG (*.jpg)|*.jpg|" + "Изображение BMP (*.bmp)|*.bmp|" + "Изображение PNG (*.png)|*.png"; DialogResult openResult = openFileDialog.ShowDialog(); if (openResult == DialogResult.Cancel) return; fileName = openFileDialog.FileName; if (fileName == null || fileName == "") MessageBox.Show("Ошибка открытия файла", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); else { try { viewer = source = Image.FromFile(fileName); if (source.Width >= pictureBox.Width || source.Height >= pictureBox.Height) { pictureBox.Image = ImageSizeChange(pictureBox.Width, pictureBox.Height); } else { pictureBox.Image = source; } } catch (Exception ex) { MessageBox.Show("Не удалось загрузить файл: " + ex.Message); } } width_textBox.Text = (source.Width).ToString(); height_textBox.Text = (source.Height).ToString(); } public void SaveImage() { if (source != viewer) { try { viewer.Save(fileName); MessageBox.Show("Файл сохранен!", "Удачное сохранение", MessageBoxButtons.OK, MessageBoxIcon.Information); //source = Image.FromFile(fileName); } catch (Exception ex) { MessageBox.Show("Не удалось сохранить файл: " + ex.Message); } } else { MessageBox.Show("Файл не был изменен", "Неудачное сохранение", MessageBoxButtons.OK, MessageBoxIcon.Information); } } При попытке сохранить срабатывает catch и выдается следующее сообщение - В GDI возникла ошибка общего вида!!! Пробовал дебажить с Брекпоинтом... переменные заполнены правильно, путь тоже существует, однако сэйф все равно не проходил У кого нить есть предположения в чем может быть problem???
A-Spt_N(o), Может проще перед сохранением, удалять предыдущее изображение? 1. Проверил, если файл существует. 2. Удалил. 3. Сохранил.
Смысла в этом особого не вижу... ошибка где то здесь должна быть. я выложил два основных метода с которыми может быть связана ошибка... В остальных участках кода загруженное изображение растягивается, сжимается, уменьшается по процентно и тому подобное.
ну в принципе вариант... однако я думаю ты сам понимаешь, что с точки зрения разработки ПО - это не самый лучший вариант у меня был вариант что ошибка возникает потому, что я пытаюсь писать в ОТКРЫТЫЙ файл... однако насколько я понимаю после загрузки изображения файл закрывается автоматически и не используется.
Возможны проблемы если файл только для чтения? или он действительно занят другим процессом. P.s. А попробуй создать 2 файла. Img1 , Img2. Загружаешь Img1 выполняешь действия а сохраняешь в Img2. если произойдет удачно, тогда просто не освобождаешь дескриптор.
1. http://www.google.ru/search?hl=ru&newwindow=1&ei=plPmS5OyHomnOK-44dsN&sa=X&oi=spell&resnum=0&ct=result&cd=1&ved=0CCAQBSgA&q=%D0%92+GDI%2B+%D0%B2%D0%BE%D0%B7%D0%BD%D0%B8%D0%BA%D0%BB%D0%B0+%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0+%D0%BE%D0%B1%D1%89%D0%B5%D0%B3%D0%BE+%D0%B2%D0%B8%D0%B4%D0%B0&spell=1 2. http://www.sql.ru/forum/actualthread.aspx?tid=622774