|
3 / 3 / 3
Регистрация: 24.05.2017
Сообщений: 32
|
|||||||||||
.NET 4.x Переполнение памяти при работе с изображениями20.06.2018, 23:30. Показов 5311. Ответов 27
Суть проблемы такова:
Имеется код для отображения изображений на panel и дальнейшей работы с ними (добавление/удаление кастомных тегов, перемещения, ссылки на оригинал, каталогизация и тд) Но при загрузке изображений в PictureBox RAM стремительно переполняется и вылазит исключение. Использование GC.Collect, GC.AddMemoryPressure. Не сильно помогло. PicBox.Image.Dispose(); вызывает исключение System.ArgumentException: "Недопустимый параметр." Нужно каким то образом довести потребление памяти до приемлемого количества, предположу что вся проблема в методе отображения изображений, но ничего лучше я не придумал. И при этом количество изображений превышает 1500 шт.
0
|
|||||||||||
| 20.06.2018, 23:30 | |
|
Ответы с готовыми решениями:
27
Уменьшение используемого объёма памяти при работе с изображениями Переполнение оперативной памяти при работе макроса Артефакты при работе с изображениями |
|
|
|||
| 21.06.2018, 06:57 | |||
|
MaikasUA,
На форме надо отображать уменьшенные изображения. Уменьшать можно сторонними библиотеками. Возможно, найдётся что-то достаточно быстрое.
0
|
|||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||
| 21.06.2018, 07:01 | ||
|
А если прикрутить модуль для работы с архивами, то превьюшки кешировать внутрь zip файла, назвать его MegaThumbs.db это позволит не занимать кластеры на диске и не напрягать HDD/SSD, сжатие в таком файле можно и отключить.
0
|
||
|
3 / 3 / 3
Регистрация: 24.05.2017
Сообщений: 32
|
||
| 21.06.2018, 07:02 [ТС] | ||
|
belalugoci,
0
|
||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||||
| 21.06.2018, 07:03 | |||||||
0
|
|||||||
|
|
||
| 21.06.2018, 07:06 | ||
|
Можно с помощью команд ImageMagick перекодировать кучу исходных изображений в превьюшки.
0
|
||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||
| 21.06.2018, 07:13 | |||
|
суперкартинкасдевчатами.png имел бы после получения хэша имя ghd634gfghd63.png При обращении к картинке в foreach проверяете FileExists в папке Cache и если находите совпадение, то открываете файл из кеша, если совпадения нет, то открываете оригинал, создаете кеш, превью попадает на панель, а память от оригинала освобождаете. В итоге будете банально даже скроллом пользуясь кешировать папку за один проход. Формально, если позволяет решаемая задача, вы можете кеш строить до начала работы или наоборот в момент закрытия. В общем любая оптимизация отталкивается от самой задачи. Я в своё время изменив подход к работе с данными с большой базой SQL, оптимизировал код так, что вместо десятков тысяч запросов у меня остался один запрос на чтение и один на изменение, скорость выросла примерно в 100000 раз (до того как нашел решение я даже запускал обработки в несколько потоков и мечтал о процессоре с HyperThreading (как раз вышли первые Pentium 4 с такой фичей)). Добавлено через 2 минуты , но что значит "не поместятся"?
0
|
|||
|
|
|||
| 21.06.2018, 07:23 | |||
|
Поэтому контролы PictureBox размером 100*100 . Но файл в память грузится всё равно исходного размера, распаковывается в Bitmap и после уменьшается в разрешении до 100*100 уже самим контролом (PictureBoxSizeMode.StretchImage), чтобы отобразиться в нём. Отсюда такой расход памяти. Добавлено через 2 минуты
0
|
|||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||
| 21.06.2018, 07:25 | |||||
0
|
|||||
| 21.06.2018, 07:25 | |
|
При работе с 24-разрядными изображениями происходят искажения Ошибка доступа при работе с изображениями в DrawGrid Переполнение стека при работе с матрицей Помогите разобраться с ошибкой при работе с изображениями, пожалуйста Ошибка при работе с изображениями: The name 'ResolveUrl' does not exist in the current context Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|