crossplatform.ru

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

> Как быстро создавать миниатюры изображений
BagmutA
  опции профиля:
сообщение 20.4.2011, 11:20
Сообщение #1


Студент
*

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

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




Репутация:   0  


Созаю миниатюры изображений:
QImage im;
    im.load(filename);
    im = im.scaled(icoWidth, icoHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation);            
    im.save( filename_s, "JPG", 95);

Самый медленый этап: im.load(filename); -- занимает 80-90% процетов времени на создание миниатюр.
В общей сложности получается раза в 2-3 медленее чем это происходит в любом просмотрщике изображений(например Gwenview).
Подскажите, пожалуйста, как можно ускорить этот процесс, как создавать миниатюры не загружая полностью изображение.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
BagmutA
  опции профиля:
сообщение 23.4.2011, 11:13
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 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();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 28.4.2024, 12:41