Russian Qt Forum
Март 29, 2024, 14:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сжать QImage без потери качества?  (Прочитано 3622 раз)
Bolonat
Чайник
*
Offline Offline

Сообщений: 56


Qt Creator 4.5.0 на Qt 5.10.0 (W10 x64) MinGW 5.3.


Просмотр профиля
« : Октябрь 24, 2017, 08:49 »

Здравствуйте!
Мне нужно сделать скриншот виджета и внести его в QTextEdit. При этом скриншот нужно уменьшить. При уменьшении качество теряется.
Как сделать так, чтобы качество не терялось? Например, когда в Paint загружаешь png и потом сжимаешь, качество не теряется. Можно ли то же самое реализовать?
Делаю так:
Код:
        QTextDocument *document = m_teReport->document();
        QTextCursor cursor = m_teReport->textCursor();

        //Создать картинку текущего размера виджета
        QImage screenshort(m_wBottomChart->size(), QImage::Format_ARGB32_Premultiplied);

        QPainter painter(&screenshort);

        //Отрисовать изображение с виджета на картинку
        m_wBottomChart->render(&painter, QPoint(), QRegion(), QWidget::DrawChildren);

        //Здесь трансформация приведена для примера, при сжатии картинка искажается
        screenshort = screenshort.scaled(screenshort.width()/2, screenshort.height()/2, Qt::IgnoreAspectRatio);

        //Вставка в QTextEdit       
        QString imageName="image"+QString::number(m_counter);
        document->addResource(QTextDocument::ImageResource, QUrl(imageName), QVariant(screenshort));
        cursor.insertImage(imageName);
Заранее спасибо.
Записан
Apktyc
Самовар
**
Offline Offline

Сообщений: 129


Просмотр профиля
« Ответ #1 : Октябрь 24, 2017, 09:07 »

Выставите для scaled TransformationMode в Qt::SmoothTransformation, ибо по-умолчанию стоит быстрая.
Записан
Bolonat
Чайник
*
Offline Offline

Сообщений: 56


Qt Creator 4.5.0 на Qt 5.10.0 (W10 x64) MinGW 5.3.


Просмотр профиля
« Ответ #2 : Октябрь 24, 2017, 09:13 »

Выставите для scaled TransformationMode в Qt::SmoothTransformation, ибо по-умолчанию стоит быстрая.
Спасибо. Помогло.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 22.