2009-08-24 7 views

Respuesta

7

Aquí hay una aplicación de línea de comandos de ejemplo Qt4 que crea un Screengrab de toda una página Web - fácil de adaptar para la generación de miniaturas ....

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

Puede ejecutar esto en un servidor utilizando xvfb también. Consulte this blog post para ver el original y un enlace a una alternativa de python.

Cuestiones relacionadas