Здравствуйте, гость ( Вход | Регистрация )
BagmutA | Дата 23.4.2011, 11:13 |
Проблема решена. Может кому то пригодится:
|
|
wiz29 | Дата 20.4.2011, 17:28 |
к сожалению код показать не имею права, но подсказать кое что могу. 18 мпикс фотки формат jpeg? какие либы в составе Gwenview. есть еще одна особенность открытия миниатюр например в стандартном виндовом браузере Он тоже как бы мгновенно открывает миниатюры, но нужно не забывать что первый раз на создание кеша этих миниатюр у виндов тоже уходит заметное время. Image browser, это компонент в разрабатываемой совтине, аналог Browse in bridge в Photoshop. но надо сказать там заметное время тратится на открытие больших картинок. Хотя они используют не Qt движок. попробуй вырезать thumbnail из тестовых фоток и скормить Gwenview. Посмотри насколько быстро у них это получится для сравнения. QImage всегда зачитывают весь файл, вроде в мобильной версии Qt были какие то классы связанные с получением thumbnail'ов, но они не доступны для PC версии |
|
BagmutA | Дата 20.4.2011, 17:15 |
в 2-3 раза медленнее с чем сравниваешь и на каких форматах изображения? Брал папку с десятью 18-мегапиксельными изображениями и засекал время создания миниатюр в Gwenview и в моей программе. я писал нечто подобное, Image browser, он генерит представление thumbnail'ов работает не медленнее чем IrfanView. в Gui поток приходят миниатюры А можно по подробней. |
|
wiz29 | Дата 20.4.2011, 17:10 |
нельзя использовать QPixmap вне guithread , соответственно подходит только QImage. в 2-3 раза медленнее с чем сравниваешь и на каких форматах изображения? я писал нечто подобное, Image browser, он генерит представление thumbnail'ов работает не медленнее чем IrfanView. в Gui поток приходят миниатюры, дальше отправляются в QGraphicsView представление. но там для чтения миниатюр из jpeg используется libJPEG. Поскольку они оч мало занимают, то загружаются практически мгновенно.... |
|
BagmutA | Дата 20.4.2011, 16:43 |
Честно говоря я там ничего нужного не нашёл, если там и пытаются делать что-то похожее то посредством QPixmap. |
|
RazrFalcon | Дата 20.4.2011, 16:16 |
2-я ссылка | |
BagmutA | Дата 20.4.2011, 15:23 |
Ну я же говорю, что в 2-3 раза медленне нежели в других просмотрщиках. Есть идея использовать QIcon:
Но проблема в том, что в QThread небезопасно использовать QPixmap, пишет:QPixmap: It is not safe to use pixmaps outside the GUI thread. И соответственно не сохраняется миниатюра. Как можно преобразовать QIcon непосредственно в QImage или хотя бы без промежуточного использования QPixmap? |
|
RazrFalcon | Дата 20.4.2011, 15:16 |
Медленно - это сколько? У меня на не новом ноуте, чтение изображение из тегов .flac и сжатие до 200pix, происходит практически мгновенно. Можно покрутить сторонние библиотеки. Тот же openCV, imagemagic. Но у них тоже все упирается во время загрузки изображения. Это скорее от железа зависит. |
|
wiz29 | Дата 20.4.2011, 13:54 |
Тогда нужно использовать конкретные библиотеки для чтения файлов графических форматов, например в JPEG могут хранится миниатюры, но не всегда они есть, поэтому придется загружать файл целиком (в случае когда нет миниатюры в файле). Это сэкономит время лишь в ряде случаев и не для всех типов форматов. Если время создания миниатюр критично (например известно что они должны создаваться в основном для файлов фоток, в них как правило хранятся миниатюры) то используй libJPEG библиотеку для работы с jpeg'ом. в api libjpeg есть функции по загрузке миниатюр. Есть более общая либа, freeImage, она объединяет в себе несколько библиотек для чтения нескольких форматов файлов, на сколько универсально ее api не могу сказать, в моих проектах используются конкретные библиотеки для конкретных форматов. |
|
BagmutA | Дата 20.4.2011, 13:38 |
Созаю миниатюры изображений:
Самый медленый этап: im.load(filename); -- занимает 80-90% процетов времени на создание миниатюр. В общей сложности получается раза в 2-3 медленее чем это происходит в любом просмотрщике изображений(например Gwenview). Подскажите, пожалуйста, как можно ускорить этот процесс, как создавать миниатюры не загружая полностью изображение. Тебя смущает "подвисание" во время загрузки или что то еще? Это все происходит в отдельном потоке. Собственно интересует как можна быстро загрузит картинку или вообще как можна быстро создавать миниатюры изображений? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 11.12.2024, 22:06 |