PDA

Просмотр полной версии : Save картинки (C#)


A-Spt_N(o)
07.05.2010, 20:16
Закончил программку(курсовой) по работе с изображениями... возникла небольшая проблема с сохранением(с заменой существующего из-ия). Сохранить как - работает, все четко, все отлично... а вот замена, что то не получается....

Вот исходники двух методов (загрузки изображения и пересохранения):



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)
07.05.2010, 22:53
Что не у кого нет вариантов почему может происходить ошибка???

Juda
08.05.2010, 23:18
Есть варианты. выложи весь свой проект. Этот исходник не полный. :-)

JnK
09.05.2010, 09:43
A-Spt_N(o), Может проще перед сохранением, удалять предыдущее изображение?

1. Проверил, если файл существует.
2. Удалил.
3. Сохранил.

A-Spt_N(o)
09.05.2010, 09:52
Смысла в этом особого не вижу... ошибка где то здесь должна быть. я выложил два основных метода с которыми может быть связана ошибка...

В остальных участках кода загруженное изображение растягивается, сжимается, уменьшается по процентно и тому подобное.

A-Spt_N(o)
09.05.2010, 09:55
A-Spt_N(o), Может проще перед сохранением, удалять предыдущее изображение?

1. Проверил, если файл существует.
2. Удалил.
3. Сохранил.

ну в принципе вариант... однако я думаю ты сам понимаешь, что с точки зрения разработки ПО - это не самый лучший вариант:(

у меня был вариант что ошибка возникает потому, что я пытаюсь писать в ОТКРЫТЫЙ файл... однако насколько я понимаю после загрузки изображения файл закрывается автоматически и не используется.

JnK
09.05.2010, 10:02
Возможны проблемы если файл только для чтения?
или он действительно занят другим процессом.

P.s. А попробуй создать 2 файла. Img1 , Img2. Загружаешь Img1 выполняешь действия а сохраняешь в Img2. если произойдет удачно, тогда просто не освобождаешь дескриптор.

W!z@rD
09.05.2010, 10:20
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%B 0+%D0%BE%D0%B1%D1%89%D0%B5%D0%B3%D0%BE+%D0%B2%D0%B 8%D0%B4%D0%B0&spell=1

2. http://www.sql.ru/forum/actualthread.aspx?tid=622774

A-Spt_N(o)
09.05.2010, 10:33
Ошибку свою понял:))) всем кто помог большое спасибо, к репе накинул)