14 / 14 / 6
Регистрация: 11.07.2015
Сообщений: 147
1

PictureBox: загрузка и сохранение изображений

27.07.2015, 15:38. Показов 4064. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
Я еще новичок в C#. Я создал программу, суть которой загрузить в PictureBox изображение, провести манипуляции над ним, и сохранить его. Путь для загрузки и сохранения изображения выбирается с помощью OpenFileDialog и SaveFileDialog соответственно. Загрузка изображения происходит таким образом:
C#
1
pictureBox2.Load(openFileDialog1.FileName);
Сохранение изображения происходит таким образом:
C#
1
pictureBox2.Image.Save(saveFileDialog1.FileName, FormatOfImage);
Проблема заключается в том, что если сохранить изображение вместо исходного, так программа вылетает, так как изображение открыто в этой же программе. Даную проблему удалось решить, заменив Load на LoadAsync, но тогда появилась другая проблема: программа вылетает при вызове pictureBox2.Dispose(), а если его убрать, то не будет очищаться оперативная память, если загрузить другое изображение.
Как можно сделать так, чтоб устранить обе проблемы? Заранее благодарен за ответ!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.07.2015, 15:38
Ответы с готовыми решениями:

Загрузка изображений из БД в PictureBox
Всем привет:Возник вопрос: Как можно картинки закинуть из БД в pictureBox.(тИП OLE). К примеру у...

Сохранение изображений в PictureBox'ах в файл
вот часть кода, для создания большой картинки из маленьких, как можно ее сохранить в один файл...

Picturebox загрузка изображений формата wmf
Здравствуйте. Подскажите, где копать, хочу сделать программу: Загружаю в pucturebox1.Image...

Загрузка в PictureBox из массива изображений, полученного из Gif-файла
Здравствуйте. Гифка хранится в БД, я её достаю оттуда с помощью потока и сохраняю в массив...

6
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
27.07.2015, 16:14 2
Лучший ответ Сообщение было отмечено anem как решение

Решение

Попробуй открывать как-то так:
C#
1
2
3
4
                        System.IO.FileStream fs = new System.IO.FileStream(openFileDialog1.FileName, System.IO.FileMode.Open);
                        System.Drawing.Image img = System.Drawing.Image.FromStream(fs);
                        fs.Close();
                        pictureBox2.Image = img;
1
14 / 14 / 6
Регистрация: 11.07.2015
Сообщений: 147
27.07.2015, 20:14  [ТС] 3
Спасибо! Работает!
Еще вопрос: для System.Drawing.Image img не нужно вызывать метод Dispose() ?
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
27.07.2015, 21:30 4
Dispose(), насколько мне известно, нужен.
1
14 / 14 / 6
Регистрация: 11.07.2015
Сообщений: 147
27.07.2015, 21:45  [ТС] 5
Цитата Сообщение от EvilFromHell Посмотреть сообщение
Dispose(), насколько мне известно, нужен.
Когда я пытаюсь его вызвать, программа вылетает.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
27.07.2015, 22:02 6
Где именно? У меня так работает:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
namespace WindowsFormsApplication94
{
    public partial class Form1 : Form
    {
        System.Drawing.Image img;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog f = new OpenFileDialog();
            if (f.ShowDialog() == DialogResult.OK)
            {
                System.IO.FileStream fs = new System.IO.FileStream(f.FileName, System.IO.FileMode.Open);
                img = System.Drawing.Image.FromStream(fs);
                fs.Close();
                pictureBox1.Image = img;
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            pictureBox1.Image = null;
            img.Dispose();
           //или
           //pictureBox1.Image.Dispose();
           // pictureBox1.Image = null;
            pictureBox1.Invalidate();
        }
    }
}
1
14 / 14 / 6
Регистрация: 11.07.2015
Сообщений: 147
28.07.2015, 10:36  [ТС] 7
Спасибо! У меня уже тоже работает.
Просто я тогда вызывал этот метод сразу после присвоения pictureBox-у.
0
28.07.2015, 10:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2015, 10:36
Помогаю со студенческими работами здесь

Загрузка изображений из access базы в picturebox
Добрый день. Подскажите пожалуйста как из базы access загрузить в picturebox картинку, которая в...

Загрузка изображений из БД в pictureBox
Добрый вечер, форумчане !) Поползав в интернете так и не смог понять, как можно картинки закинуть...

Загрузка изображений в pictureBox по условию
Доброго времени суток всем! Необходимо загружать в pictureBox изображения в зависимости от текста...

Сохранение и открытые изображений из pictureBox в файл
Всем привет. Как сохранить то что нарисовано в picturebox в файл? Есть к примеру pictureBox1 и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru