代码之家  ›  专栏  ›  技术社区  ›  Lothar

如何创建网站的缩略图?

  •  5
  • Lothar  · 技术社区  · 16 年前

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

    1 回复  |  直到 16 年前
        1
  •  7
  •   Paul Dixon    16 年前

    这是一个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替代文件的链接。