crossplatform.ru

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

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> Как быстро создавать миниатюры изображений
wiz29
  опции профиля:
сообщение 20.4.2011, 17:28
Сообщение #11


Старейший участник
****

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

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




Репутация:   12  


к сожалению код показать не имею права, но подсказать кое что могу. 18 мпикс фотки формат jpeg? какие либы в составе Gwenview.

есть еще одна особенность открытия миниатюр например в стандартном виндовом браузере
Он тоже как бы мгновенно открывает миниатюры, но нужно не забывать что первый раз на создание кеша этих миниатюр у виндов тоже уходит заметное время.

Image browser, это компонент в разрабатываемой совтине, аналог Browse in bridge в Photoshop. но надо сказать там заметное время тратится на открытие больших картинок. Хотя они используют не Qt движок.

попробуй вырезать thumbnail из тестовых фоток и скормить Gwenview. Посмотри насколько быстро у них это получится для сравнения. QImage всегда зачитывают весь файл, вроде в мобильной версии Qt были какие то классы связанные с получением thumbnail'ов, но они не доступны для PC версии

Сообщение отредактировал wiz29 - 20.4.2011, 17:25
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BagmutA
  опции профиля:
сообщение 23.4.2011, 11:13
Сообщение #12


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 13.4.2011
Пользователь №: 2599

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




Репутация:   0  


Проблема решена.
Может кому то пригодится:
int icoWidth    = 200;
int icoHeight    = 200;
    QImageReader imageReader(MainWindow::currentDir + MainWindow::listImage.at(i));

    QSize size;
    int image_width;
    int image_height;

    if (imageReader.supportsOption(QImageIOHandler::Size))
    {
        size = imageReader.size();
        image_width = size.width();
        image_height = size.height();
    }

    double ratio = (double)image_width / (double)image_height;
    if (ratio >= 1)
    {
    image_width = icoWidth;
    image_height = image_width / ratio;
    }
    else
    {
        image_height = icoHeight;
        image_width = image_height * ratio;
    }

    imageReader.setScaledSize(QSize(image_width, image_height));
    QImage image = imageReader.read();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 26.11.2022, 22:56