crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> "Приоткрытие" изображений
Elfinit
  опции профиля:
сообщение 17.3.2009, 16:16
Сообщение #1


Участник
**

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

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




Репутация:   1  


Стандартный метод загрузки изображения - QImage::load. При достаточно большом изображении занимает довольно длительное время (ощутимое,по крайней мере).
Что заметил в существующих программах. Пикаса, к примеру (имею ввиду Picasa Photo Viewer). При перелистывании фоток если фотка объёмная, то изображение сначала показывается размытым, и через некоторое время заменяется чётким. При этом вроде как никаких кэшированных изображений нет (да если бы и были, на создание миникопии для кэша затрачивалось бы время,не оправданное задачей). Т.е. происходит открытие изображения сначала в плохом качестве, параллельно грузится "полноценная" фотка и заменяется при завершении загрузки. Какое-то "приоткрытие", если можно так сказать.
Другой пример - режим "эскизы страниц" или "диафильм" в винде. Превьюшки опять-таки создаются практически моментально, независимот от того, насколько велика фотка.
Вопрос такой - кто-нибудь что-нибудь знает о программной реализации этого в Qt? Возможно, что-то вроде асинхронного чтения изображений (beginLoad/endLoad какой-нибудь). Или всё-таки показывать сначала картинку плохого качества (будем считать, что она всё-таки есть), при этом запускать поток загрузку полноценной фотки и заменять плохую на полноценную? Выделять это действие в отдельный поток, по-моему, не совсем...Элегантно))) Как-то же это делают)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.3.2009, 16:26
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Elfinit @ 17.3.2009, 19:16) *
Выделять это действие в отдельный поток, по-моему, не совсем...Элегантно)))
а по моему в точности наоборот, самое элегантное - это паралельный процесс.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Elfinit
  опции профиля:
сообщение 17.3.2009, 16:34
Сообщение #3


Участник
**

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

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




Репутация:   1  


Т.е. например при перелистывании фоток на кажду фотку стартовать отдельный поток, или всегда держать один, который будет ждать запроса?
А что, если переход на следующую фотку будет запрошен раньше,чем загрузится текущая? А в режиме слайд-шоу как предусмотреть все варианты?))
Вообще, в целом не горит, просто жутко интересно, как это делается..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.3.2009, 17:22
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Elfinit @ 17.3.2009, 19:34) *
А что, если переход на следующую фотку будет запрошен раньше,чем загрузится текущая?
в хорошей программе нужно предусматривать прерывание любых процессов, если какой-то процесс перестал быть нужен, его прерывать.

Цитата(Elfinit @ 17.3.2009, 19:34) *
А в режиме слайд-шоу как предусмотреть все варианты?))
слайдшоу - последовательный процесс. Вот условные обозначения:
Тх-1 - время на один шаг в прошлое (предыдущий кадр/картинка)
Тх - настоящее (текущий кадр)
Тх+1 - время на шаг в будущее (следующий кадр)
+d - положительная тенденция, т.е. изменение времени положительно (от прошлого к будущему)
-d - отрицателная тенденция, т.е. изменение времени отрицательно (от будещего кпрошлому)
тогда, загружать надо так:
1) если +d, то загружаем Тх, по завершении загрузки начать загрузку Тх+1, а Тх-2 (если таковой есть) удалить
2) если -d, то загружаем Тх, по завершении загрузки начать загрузку Тх-1, а Тх+2 (если таковой есть) удалить
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 26.12.2024, 14:07