|
4 / 4 / 1
Регистрация: 31.05.2011
Сообщений: 52
|
||||||
Форма занимает много ОЗУ при динамическом выводе фотографий21.03.2013, 14:19. Показов 2503. Ответов 7
Метки нет (Все метки)
Господа, реализую в программе отображение фотографий из MySQL на panel.
При запуске программы (это сервер на TcpListener) она занимает 3.8 Мб, а после старта сервера около 6.5 Мб, наверно это приемлемо так как это мое первое графическое приложение на WinForms. Интерфейс реализован при помощи TabControl и имеет четыре вкладки и вот на одной из них у меня реализована возможность администрировать фотографиями. И как только я подгружаю фотографии из файлов на HDD, то размер памяти занимаемым приложением возрастает до 91 Мб и это я загрузил всего лишь 6 фотографий. Фотографии на диске хранятся в больших размерах. Вес фотографий от 300Кб до 4.25 Мб и при выводе их в форму я просто задал размеры pictureBox чтобы показывались как превью. Наверное это не правильно. Выкладываю код, которым я выгружаю фотографии. Подскажите что можно оптимизировать.
Я уже читал на форуме что .NET резервирует под себя память и так далее. Но я так понял что у людей изначально при запуске программы сжирает кучу памяти. Но у меня именно после загрузки картинок из БД. Количество памяти смотрю в диспетчере задач. В данном приложении не важно количество памяти, это курсовая работа по клиент-серверным приложениям, но я хочу научится нормально кодить на дотнет. Раз уж начал писать, желаю сделать нормальный продукт. Прошу помощи знатоков. Добавлено через 8 минут Общий размер всех фотографий 11 Мб
0
|
||||||
| 21.03.2013, 14:19 | |
|
Ответы с готовыми решениями:
7
При динамическом добавлении строк в TextBox виснет форма Зависает форма при выводе в textbox При выводе двумерного символьного массива много непонятного мусора, либо непонятные символы |
|
|
|||
| 21.03.2013, 14:31 | |||
|
jpg хранит фотки в сжатом виде, для того чтобы узнать их настоящий размер, сохрани их в *.bmp (именно столько места они будут занимать при отображении).
2
|
|||
|
4 / 4 / 1
Регистрация: 31.05.2011
Сообщений: 52
|
|
| 21.03.2013, 15:27 [ТС] | |
|
Да, фотографии в разных форматах.
Так а какой выход? Может их как-то преобразовывать перед выводом? Как решается такая задача?
0
|
|
|
55 / 55 / 14
Регистрация: 26.04.2010
Сообщений: 177
|
|
| 21.03.2013, 16:57 | |
|
Задача практически не решается без потери качества изображения. Проблема в том, что в jpg, gif, png и других популярных форматах изображение сжимается согласно тому алгоритму, который соответствует данному типу файла. Степень сжатия зависит от "пёстрости" изображения. Т.е. в случае, если все точки исходного изображения имеют свой уникальный цвет, то сжать такое изображение практически невозможно без потери качества.
При отображении изображения, хранимого в одном из этих форматов, происходит их восстановление в полноценный растр. Именно поэтому объём памяти для отображения требуется большой. Для того, чтобы разобраться с решением задачи, нужно сначала задачу сформулировать. Например, если Вам нужно отобразить несколько изображений, можно крупно показывать только одно изображение, а для остальных выводить миниатюрные копии (их можно подготовить заранее, либо сгенерировать динамически - во втором случае по указанной выше причине потребуется много памяти). Если потеря качества разрешена, можно поиграть с палитрой. Но это - отдельная тема. Добавлено через 16 минут Пара ссылок по теме: http://www.designer-info.com/W... eg_gif.htm http://www.cambridgeincolour.c... etypes.htm И, кстати, Вы будете ещё больше удивлены размером изображения при его выводе на печать
2
|
|
|
4 / 4 / 1
Регистрация: 31.05.2011
Сообщений: 52
|
|
| 21.03.2013, 17:23 [ТС] | |
|
Я сформулировал задачу: мне нужно подготовить миниатюрные изображения для показа в интерфейсе программы.
Как это лучше всего сделать? Исходные изображения 3960х2640 (взял первое попавшееся) в формате JPEG и весит оно 4.25 мБ. Я перевел его в bmp и оказалось 25 Мб - ужс=( Нужно из него сделать картинку 102х70. Вопрос - как это сделать?
0
|
|
|
)))
|
||
| 21.03.2013, 18:05 | ||
![]() Просто другой вариант это перебор точек, кода будет больше намного, потребуется перегонять в массив byte, и т.д. Хотя работать будет скорее всего быстрее..
1
|
||
|
55 / 55 / 14
Регистрация: 26.04.2010
Сообщений: 177
|
||
| 21.03.2013, 19:14 | ||
![]() А Вам реально нужен такой размер? Его ж просто так на мониторе не разместишь... Я бы начал с того, что выяснил размеры тех картинок, которые хочу показывать, и их миниатюр. Потом определил бы, могу ли я использовать заранее приготовленные изображения, или мне нужно загружать некие неизвестные изначально изображения и динамически их приводить к нужному размеру. В первом случае все преобразования делаю в фоторедакторе - и вуаля! Во втором случае маленькие исходные изображения при демонстации размер менять не должны, а большие (те, что больше определённого Вами размера демонстрируемой картинки) преобразуются к немного уменьшенному виду. Часто для таких больших изображений на щелчок по картинке вешают обработчик, показывающий картинку в полный размер, но в прокручивающемся контейнере. Вот этот материал, может быть, поможет: http://msdn.microsoft.com/ru-r... z825d.aspx
1
|
||
|
4 / 4 / 1
Регистрация: 31.05.2011
Сообщений: 52
|
|
| 21.03.2013, 22:40 [ТС] | |
|
Я пишу клиент-серверное приложение фотоменеджера. Предполагается, что клиентом будет пользоваться некая аудитория которая будет отправлять через клиент фотографии на сервер и потом сможет их просматривать, комментировать и так далее.
При передаче файлов на сервер они сохраняются в директории такими, какими их отправил пользователь и дальше разработчик и администратор могу делать с ними что угодно. И вот мне нужно реализовать отображение миниатюр (100х70) в интерфейсе и по клику открывать большую фотографию (1000х600). Нужно создать алгоритм который будет перегонять из оригинального файла (3960х2640) на диске в миниатюру(100х70) и в большую миниатюру (1000х600). У кого есть уже какие-то наработки кода? Я на с# только недельку балуюсь, еще не совсем разобрался. Добавлено через 44 минуты Вот я нашел наработки от майкрософта, но уменьшение изображения таким образом уменьшает же его фактический размер? По идее должно, так как количество пикселей меньше... а значит и картинка меньше=) http://msdn.microsoft.com/ru-r... syd4e.aspx
0
|
|
| 21.03.2013, 22:40 | |
|
Помогаю со студенческими работами здесь
8
Форма подвисает при выводе на неё из других потоков Функция занимает много времени
БД занимает много оперативной памяти Приложение занимает много места Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|