Capturar una pantalla con PHP

Escrito por Febrero 14, 2008 – 12:02 pm | por dotBlog | 543 lectura (s)

Visto que hay muchos sitios de moda que se dedican exclusivamente a generar screenshots (capturas de pantallas) de sitios webs, les voy a explicar como lo pueden hacer usando PHP y Windows, si Windows! Con Unix y Linux no funciona mi método porque crea una instancia del navegador Internet Explorer para realizar la captura. Seguramente hay métodos que usen las librerias de GD o Imagemagick para Linux pero lamentablemente todavía no manejo muy bien esos conceptos.

Código

$screen = new COM("InternetExplorer.Application");
$ctrl = $screen->HWND;
$screen->Visible = true;
$screen->Navigate("http://dotblog.com.ar");
$screen->FullScreen = true;
 
while ($screen->Busy)
	com_message_pump(4000);
 
$im = imagegrabwindow($ctrl, 0);
$screen->Quit();
imagepng($im, "captura.png");

En la primer linea creamos la instancia de un nuevo navegador IE, después obtenemos el manejador HWND para identificar a la ventana creada, la ponemos visible y la maximizamos para que entre toda la Web a capturar. Mediante el método Navigate le asignamos la dirección de la Web a capturar y esperamos con el While hasta que el navegador termine de cargarla. Con imagegrabwindow creamos la imagen a partir del manejador y la asignamos a una variable $im que después va a ser volcada al disco rígido con el nombre captura.png.

Si querés crear algo más funcional, podrías realizar un formulario en donde se ingrese una dirección web y asignársela al método Navigate.

Cualquier duda, sugerencia o mejora del script es bienvenida :)

  1. 11 Respuestas to “Capturar una pantalla con PHP”

  2. Por Bargath el Mar 11, 2008 | Responder

    Genial!
    A pesar de mis poco conocimientos en PHP he conseguido utilizarlo.

    Pero para Rizar el Rizo, como podría aplicar este codigo a un botón en un html? sería posible? es decir que al darle al botón se hiciera una captura de la pantalla (no se si pregunto nu disparate soy novato en esto, aun así Gracias igualmente)

  3. Por dotBlog el Mar 11, 2008 | Responder

    Si se puede, crea un archivo en .php con ese codigo y despues en otro archivo .html inserta un formulario: el action que apunte al .php y pones un boton y listo.
    Espero que te puedas guiar, sino cuando tenga un tiempo te lo armo asi lo bajas. Gracias por el comentario y si te gusto el sitio, te podes suscribir :)

  4. Por Bargath el Mar 12, 2008 | Responder

    Gracias a ti por el ofrecimiento, pero intentaré hacerlo yo sólo, si tengo alguna duda o lo doy por imposible ya te pediría ayuda :S.

    La verdad es que soy diseñador gráfico y no programador, asi que no tengo mucha más idea de PHP que la que tiene un aficionado.

    Pues si, me voy a susrcribir, gracias de nuevo!

  5. Por Bargath el Mar 14, 2008 | Responder

    Buenooo… pues me rindo no he sido capaz de hacerlo… :(
    Retiro mi orgullo e invoco tu ayuda si pudieras armarme ese archivito que dices y pasarmelo… te estaría eternamente agradecido.
    Si necesitas ayuda en cualquier aspecto de diseño, HTML o CSS, que sepas que te debo una.

  6. Por dotBlog el Mar 14, 2008 | Responder

    @Bargath mañana a la tarde te armo el .html y el .php con unas mejoras y te lo agrego al post para que te lo bajes
    Y te lo voy a dejar todo comentado asi sabes para que sirve cada cosa ;)

  7. Por Bargath el Mar 15, 2008 | Responder

    muchas gracias compañero, te repito q toy en deuda, si necesitas ayuda en algo… no dudes en pedirla.

  8. Por dotBlog el Mar 15, 2008 | Responder

    Acá tienes el ejemplo bien sencillo, y con la opcion de ingresar una web.

    Descargar

    Espero que te sirva

  9. Por Bargath el Mar 17, 2008 | Responder

    Ok muchas gracias voy a probar

  10. Por Bargath el Mar 17, 2008 | Responder

    pues no me va, lo he probado en dos servidores y eun no se me queda una página en blanco y no reacciona, en el otro me da este error:

    Fatal error: Uncaught exception ‘com_exception’ with message ‘Failed to create COM object `InternetExplorer.Application’: Acceso denegado. ‘ in D:\www\hotelsorollapalace.com\datos\web\valenciahotel\Salones\screen.php:10 Stack trace: #0 D:\www\hotelsorollapalace.com\datos\web\valenciahotel\Salones\screen.php(10): com->com(’InternetExplore…’) #1 {main} thrown in D:\www\hotelsorollapalace.com\datos\web\valenciahotel\Salones\screen.php on line 10

    Esto pasa directamente con tu codigo, aun no lo he adapatado a mi diseño.

    Iré trabajando en este codigo para sacarlo.
    Gracias!

  11. Por dotBlog el Mar 17, 2008 | Responder

    Bargath tu servidor no te da acceso para crear el objeto, seguramente vas a tener que modificar los permisos. Yo estoy usando el servidor Apache (instalado con XAMPP) y no tuve problemas.

  12. Por Bargath el Mar 17, 2008 | Responder

    Si, algo asi me pensaba… el problema es q el servidor no es mio, es de un cliente externo ya hablaré con el, gracias por todo.

Opina que es gratis!

Acerca de

Sitio dedicado a difundir nuevas tecnologías, noticias de Internet, gadgets, software y todo lo que tenga que ver con las nuevas tendencias de la vida digital.

Suscribirme

 Suscribirse mediante Reader O, suscribirse vía e-mail, en donde recibirás diariamente las novedades que se publican:
Ingresa tu e-mail:  

Seguime en Twitter

Ahora podés recibir las noticias y actualizaciones directamente en tu Twitter! Solo tenés que seguir al usuario de dotBLOG y listo!
Google