crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QPixmap, потоки и память
fordil
  опции профиля:
сообщение 26.4.2010, 19:27
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 26.4.2010
Пользователь №: 1659

Спасибо сказали: 0 раз(а)




Репутация:   0  


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


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


А какого размера картинки по горизонтали и вертикали?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fordil
  опции профиля:
сообщение 26.4.2010, 20:09
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 26.4.2010
Пользователь №: 1659

Спасибо сказали: 0 раз(а)




Репутация:   0  


обычная фотография 3072х2304, точный размер 1,62 Мб
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 26.4.2010, 20:13
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(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
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 26.4.2010
Пользователь №: 1659

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо. Просветили. Но тогда вопрос как это все оптимизировать. Так как приложение планируется многопоточное с одновременным хранением нескольких изображений (каждое в своем потоке), это принципиально важно. Например в стандартном виндовс-просмотрщике те же самые изображения требуют намного меньше памяти.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 26.4.2010, 23:45
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


А ты не забывай, что у тебя разрешение экрана меньше, и выводить и хранить в памяти следует уменьшенное изображение, либо его видимый кусок :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fordil
  опции профиля:
сообщение 27.4.2010, 17:12
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 26.4.2010
Пользователь №: 1659

Спасибо сказали: 0 раз(а)




Репутация:   0  


Возможно я что-то недопонял, но:
Загрузил изображение полностью, сделал уменьшенную копию, полноразмерное изобр. удалил. Так? Если так то что делать при масштабировании? Заново загружать исходный файл? Так это глупо будет. Большая потеря во времени.
Поясните, пожалуйста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 27.4.2010, 19:41
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


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

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

Кстати, посмотри как реализована загрузка больших файлов в фотошопе или сьюте :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 6.8.2020, 10:32