C # Win. Форма - недостаточно памяти при получении изображения - PullRequest
0 голосов
/ 04 июля 2018

Brief

Я хочу отобразить изображение PNG в моем PictureBox. Во время выполнения программа запрашивает у пользователя путь к изображению.

Решение, которое я использую

Это мой код до сих пор

picturebox1.Image = null;
OpenFileDialog ofDlg = new OpenFileDialog();
ofDlg.Filter = "Image files|*.png";
if (DialogResult.OK == ofDlg.ShowDialog())
{
     picturebox1.Image = Image.FromFile(ofDlg.FileName); //Out of memory.
}

Задача

До сих пор все работало нормально, пока не получилось изображение размером 25,7 МБ (8827 x 11350 пикселей) .

Я знаю, что вы все могли бы предложить, чтобы я получил более легкую версию этого изображения, НО проблема в том, что это программное обеспечение используется для увеличения изображения для его детального просмотра. Поэтому я не могу изменить его размер любой ценой.

Теперь, когда я запускаю приведенный выше код, это дает мне исключение

Недостаточно памяти.

Я не понимаю, в чем здесь проблема, потому что у меня 8 ГБ ОЗУ установлено на моем ПК, тогда как у него не хватает памяти? Ниже приведено использование моего процессора в момент появления этого сообщения об ошибке.

enter image description here

1 Ответ

0 голосов
/ 04 июля 2018

Следуйте указаниям всех комментариев, т. Е. Убедитесь, что вы находитесь в 64-битном

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

if(picturebox1.Image != null)
   picturebox1.Image.Dispose();

picturebox1.Image = null;

OpenFileDialog ofDlg = new OpenFileDialog();
ofDlg.Filter = "Image files|*.png";
if (DialogResult.OK == ofDlg.ShowDialog())
{
     picturebox1.Image = Image.FromFile(ofDlg.FileName); //Out of memory.
}
...