Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
14 / 14 / 6
Регистрация: 11.07.2015
Сообщений: 147

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

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

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

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

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

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

6
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
27.07.2015, 16:14
Лучший ответ Сообщение было отмечено 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  [ТС]
Спасибо! Работает!
Еще вопрос: для System.Drawing.Image img не нужно вызывать метод Dispose() ?
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
27.07.2015, 21:30
Dispose(), насколько мне известно, нужен.
1
14 / 14 / 6
Регистрация: 11.07.2015
Сообщений: 147
27.07.2015, 21:45  [ТС]
Цитата Сообщение от EvilFromHell Посмотреть сообщение
Dispose(), насколько мне известно, нужен.
Когда я пытаюсь его вызвать, программа вылетает.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
27.07.2015, 22:02
Где именно? У меня так работает:
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  [ТС]
Спасибо! У меня уже тоже работает.
Просто я тогда вызывал этот метод сразу после присвоения pictureBox-у.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.07.2015, 10:36
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru