Last Updated on 13. Oktober 2018 by Thomas J. Fehr
Das Qt Framework bietet mit dem Modul QtWebKit eine vollständige „Browser-Engine“, welche das Anzeigen und Bearbeiten von Webseiten ermöglicht. Dieses Modul ermöglicht auf einfache Weise Thumbnails von Webseiten zu erstellen. In der Dokumentation zu der Klasse QWebPage befindet sich auch eine Beispielklasse zum Erstellen von Thumbnails ohne Widgets zu verwenden. Muss also ein „Command Line Tool“ erstellt werden, ist das der ideale Startpunkt.
Thumbnailer Beispielklasse
Die Header-Datei der Thumbnailer-Klasse:
#ifndef THUMBNAILER_H
#define THUMBNAILER_H
#include
#include
#include
class Thumbnailer : public QObject
{
Q_OBJECT
public:
Thumbnailer(const QUrl &url);
signals:
void finished();
private slots:
void render();
private:
QWebPage page;
};
#endif // THUMBNAILER_H
Die Thumbnailer-Klasse:
#include "thumbnailer.h"
Thumbnailer::Thumbnailer(const QUrl &url)
{
page.mainFrame()->load(url);
connect(&page, SIGNAL(loadFinished(bool)),
this, SLOT(render()));
}
void Thumbnailer::render()
{
page.setViewportSize(page.mainFrame()->contentsSize());
QImage image(page.viewportSize(), QImage::Format_ARGB32);
QPainter painter(&image);
page.mainFrame()->render(&painter);
painter.end();
QImage thumbnail = image.scaled(400, 300);
thumbnail.save("thumbnail.png");
emit finished();
}
Die main-Klasse:
#include "thumbnailer.h"
#include
int main(int argc, char *argv[])
{
QApplication a( argc, argv);
Thumbnailer myThumb(QUrl("http://www.google.com"));
QObject::connect(&myThumb, SIGNAL(finished()), QApplication::instance(), SLOT(quit()));
return a.exec();
}
Verwenden von Browser Plugins wie Adobe Flash
Damit auch die Flash-Elemente einer Webseite auf dem Thumbnail dargestellt werden, muss das Flash-Plugin bereits auf dem System installiert sein und das QWebSetting „PluginsEnabled“ aktiviert werden:
page.settings()->setAttribute(QWebSettings::PluginsEnabled, true);
Nützliche Links
QT Beispiel Projekt
WebScreenie is small qt command-line utility to create snapshot of webpages.
QT-Code websnap
> _Thumbmailer_ Beispielklasse
Typo.
Hallo Ikem
Danke für deinen Hinweis!
Gruess
Thomas