如何创建网站的缩图?

时间:2009-08-24 07:06:13

标签: webkit gecko

是否会猜到已经有一个基于webkit / gecko的命令行应用程序(甚至可能作为服务器加速到多个页面的渲染)已经在做这个了?

1 个答案:

答案 0 :(得分:7)

这是一个示例Qt4命令行应用程序,可以创建整个网页的屏幕抓图 - 易于生成缩略图....

#include <QtGui/QApplication>
#include <QtCore/QCoreApplication>
#include <QtGui>
#include <QtWebKit>
#include <QWebPage>
#include <QTextStream>
#include <QSize>

QWebView *view;
QString outfile;

void QWebView::loadFinished(bool ok)
{
        QTextStream out(stdout);
        if (!ok) {
                out << "Page loading failed\n";
                return;
        }
        view->page()->setViewportSize(view->page()->currentFrame()->contentsSize());
        QImage *img = new QImage(view->page()->viewportSize(), QImage::Format_ARGB32);
        QPainter *paint = new QPainter(img);
        view->page()->currentFrame()->render(paint);
        paint->end();
        if(!img->save(outfile, "png"))
                out << "Save failure\n";
        QApplication::quit();
        return;
}

int main(int argc, char *argv[])
{
        QTextStream out(stdout);
        if(argc < 3) {
                out << "USAGE: " << argv[0] << " <url> <outfile>\n";
                return -1;
        }
        outfile = argv[2];
        QApplication app(argc, argv);
        view = new QWebView();
        view->load(QUrl(argv[1]));

        return app.exec();
}

您也可以使用xvfb在服务器上运行此功能。请参阅this blog post了解原始内容以及指向python替代方案的链接。