Capturar una pantalla con PHP
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
11 Respuestas to “Capturar una pantalla con PHP”
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)
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
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!
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.
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
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.
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
Por Bargath el Mar 17, 2008 | Responder
Ok muchas gracias voy a probar
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!
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.
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.