Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Bolonat от Октябрь 24, 2017, 08:49



Название: Как сжать QImage без потери качества?
Отправлено: Bolonat от Октябрь 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);
Заранее спасибо.


Название: Re: Как сжать QImage без потери качества?
Отправлено: Apktyc от Октябрь 24, 2017, 09:07
Выставите для scaled TransformationMode в Qt::SmoothTransformation, ибо по-умолчанию стоит быстрая.


Название: Re: Как сжать QImage без потери качества?
Отправлено: Bolonat от Октябрь 24, 2017, 09:13
Выставите для scaled TransformationMode в Qt::SmoothTransformation, ибо по-умолчанию стоит быстрая.
Спасибо. Помогло.