Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Система рисования. Печать _ QPixmap, потоки и память

Автор: fordil 26.4.2010, 19:27

Всем привет.
В данный момент делаю небольшой просмотрщик изображений.
Столкнулся с тем, что при загрузке в GraphicScene фотографии размером ну допустим 1,5 Мб, память занимаемая процессом увеличивается приблизительно на 30 Мб. Тестовая картинка в 150 Мб сожрала еще 250 оперативы. Для хранения изображений использую QPixmap. Что можете посоветовать?

Автор: BRE 26.4.2010, 19:38

А какого размера картинки по горизонтали и вертикали?

Автор: fordil 26.4.2010, 20:09

обычная фотография 3072х2304, точный размер 1,62 Мб

Автор: BRE 26.4.2010, 20:13

Цитата(fordil @ 26.4.2010, 21:09) *
обычная фотография 3072х2304, точный размер 1,62 Мб

Точный размер в памяти, если учитывается альфа, т.е. 4 байта на точку:
3072 x 2304 x 4 = 28 311 552 байт

Размер ничего не напоминает? ;)

Автор: fordil 26.4.2010, 20:27

Спасибо. Просветили. Но тогда вопрос как это все оптимизировать. Так как приложение планируется многопоточное с одновременным хранением нескольких изображений (каждое в своем потоке), это принципиально важно. Например в стандартном виндовс-просмотрщике те же самые изображения требуют намного меньше памяти.

Автор: ufna 26.4.2010, 23:45

А ты не забывай, что у тебя разрешение экрана меньше, и выводить и хранить в памяти следует уменьшенное изображение, либо его видимый кусок :)

Автор: fordil 27.4.2010, 17:12

Возможно я что-то недопонял, но:
Загрузил изображение полностью, сделал уменьшенную копию, полноразмерное изобр. удалил. Так? Если так то что делать при масштабировании? Заново загружать исходный файл? Так это глупо будет. Большая потеря во времени.
Поясните, пожалуйста.

Автор: ufna 27.4.2010, 19:41

Для изображений, которых в данный момент нет на экране - это нормально. Или ты в большом разрешении и динамично взаимодйствуешь с десятками изображений?

Суть - убрать затраты памяти там, где реально не нужно все изображение.

Кстати, посмотри как реализована загрузка больших файлов в фотошопе или сьюте :)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)