Получение изображения из html страници на Qt

Если вам необходимо создать, а затем вывести/сохранить изображение, то эта статья для вас.

Для получения изображения мы воспользуемся методом render().

Итак. Для начала создадим html виджет

QWebView *view = new QWebView(parent);

И наполним его содержанием:

QString html = QString::fromLocal8Bit(«<div class=’q’><div class=’vote’><a href=’/quote/409943′>409943</a>[ <span id=’v409943′>1827</span> ]<a href=’/quote/409943/rulez’>смешно</a> /<a href=’/quote/409943/bayan’>[:||||:]</a> /<a href=’/quote/409943/sux’>не смешно</a> /утверждена 2011-03-15 в 08:46</div><div>xxx: Вот просто интересно посмотреть, кто эту рекламу делал, заглянуть в его фасеточные глаза, узнать откуда у него тентакли растут. <br>xxx: Потому что гуманоид до такого не додумается.</div></div>»);

view->setHtml(html);

Получим размер контента на странице:

QSize size = view->page()->mainFrame()->contentsSize();

И установим его в качестве размера Viewport’а:

    view->page()->setViewportSize(size);

Теперь получим изображение и сохраним его:

    QImage image;

    image = QImage(view->page()->viewportSize(), QImage::Format_ARGB32);

    QPainter painter(&image);

    view->page()->mainFrame()->render(&painter);

    painter.end();

    image.save(«output.png»);

Таким образом будет создано изображение output.png содержащее «скрин» страницы.

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий