2009-08-24 10 views
5

Est-ce qu'il devinerait qu'il existe déjà une application de ligne de commande basée sur webkit/gecko (peut-être même travailler comme un serveur accélérant le déchirement de plusieurs pages) qui le fait déjà?Comment créer une vignette d'un site Web?

Répondre

7

est ici une application de ligne de commande exemple Qt4 qui crée une screengrab d'une page Web entière - facile à adapter pour la génération des miniatures ....

#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(); 
} 

Vous pouvez exécuter sur un serveur en utilisant xvfb aussi. Voir this blog post pour l'original et un lien vers une alternative python.

Questions connexes