2008-09-23 11 views
7

Un problema que he estado jugando con las intermitencias es un servicio que requiere que mi servidor produzca una captura de pantalla de una página web en una url determinada. El problema es que no tengo idea de cómo lograría esto. La mayoría de las veces utilizo una pila de software LAMP, por lo que las respuestas que se dieron con eso en mente serían las más útiles. Una vez más, los requisitos básicos son: dada una url, el servidor necesita producir un archivo de imagen de la página web representada en esa url. ¡Gracias por adelantado!¿Capturas de pantalla web generadas por servidor?

+1

no te preocupes traumaPony, mi servicio web no tiene nada que ver con las imágenes emergentes que se ciernen sobre los enlaces mientras tratas de leer un artículo :) –

Respuesta

2

Realmente necesita que el servidor inicie el navegador web en cuestión y tome una captura de pantalla de la aplicación con las bibliotecas apropiadas. Apache no renderizará la página por ti, por lo que debes tener un software que lo haga.

+0

derecha. Algunas de las ideas que tenía eran recolectar automáticamente una captura de pantalla del entorno de escritorio, o de alguna manera usar el motor gecko para construir una versión renderizada de la página desde la que podía construir una imagen. Hmm .... –

2

Sí, eso es lo que se necesita. Hago esto en asp.net, y realmente creo un objeto WebBrowser que está disponible en las bibliotecas de clase de .Net Framework para generar la captura de pantalla.

6

Es posible que también desee echar un vistazo a webkit, es conocido por ser más fácil de incrustar (utilizado por Adobe para AIR, Google para Chrome, Apple para iPhone ...) y otros motores de renderizado. Esto puede tomar un poco más de trabajo para la configuración, pero sería mucho más estable que un hack que lanzó un navegador web y tomó una captura de pantalla.

+0

Me gusta tu forma de pensar –

+3

Hoy en día hay disponible [PhantomJS] (http://www.phantomjs.org/), un WebKit sin cabeza. – jholster

+0

@jholster ¡Gracias por este comentario! ¡PhantomJS se ve exactamente como lo que estaba buscando! – ahans

6

SI su servidor es un Mac, entonces te recomiendo webkit2png, que es un programa de pitón corta que aprovecha la API de Objective-C de WebKit para hacer una URL. Personalmente, lo utilizo en combinación con WWW::Mechanize para recorrer mi sitio de desarrollo y hacer capturas de pantalla de cada página, lo que es útil para comprobar la funcionalidad, mostrar a los clientes y mantener las capturas de pantalla actualizadas. La captura de pantalla resultante es perfecta, pero a veces muy alta para páginas largas que se desplazan.

SI el servidor dispone de un no-escueto instalado Linux distro con KDE, entonces es posible que intente khtml2png. No lo he intentado yo mismo, pero lo he visto mencionado en la página webkit2png.

+0

De alguna manera, no creo que haya tantos servidores Mac por ahí, pero khtml2png también se ve bien (si no tan pulido) – davr

2

Utilizo el servicio http://webthumb.bluga.net para la generación de miniaturas. Robustas, potentes, fáciles de usar y muy razonables. Tengo un sitio web de producción de alto tráfico que usa este servicio y funciona muy bien. Dada la dificultad de crear un servicio robusto de captura de pantalla web, es bueno que alguien más haga el trabajo duro.

+1

pero no captura todo un sitio web, solo lo miniaturas. – PabloC

0

Una solución no gratuita para Java es WebRenderer. Una característica interesante: puede emular los navegadores Safari, IE o Firefox cuando renderiza. Tienen una versión de escritorio y una versión de servidor sin cabeza. También tienen un código de ejemplo que muestra cómo renderizar una imagen de captura de pantalla de una página web.

0

uso de este dispositivo virtual del servidor X

yo preferiría recomiendo XVFB (servidor X framebuffer virtual) es la mejor solución para realizar capturas de pantalla de un servidor sin cabeza. Virtual framebuffer X Server xvfb proporciona un servidor X que puede ejecutarse en máquinas sin hardware de visualización y sin dispositivos de entrada física. Estoy usando eso en mi servidor para probar URLs y tomar su captura de pantalla. Estamos usando Ubuntu & XVFB + FIREFOX. Está funcionando bien. Modifique de acuerdo a sus necesidades. Eche un vistazo a estos artículos. Puede ser un uso completo para ti.

http://www.semicomplete.com/blog/geekery/xvfb-firefox.html

http://linux.about.com/cs/linux101/g/xvfb.htm

http://www.xfree86.org/4.0.1/Xvfb.1.html

3

PhantomJS es un navegador basado en WebKit sin cabeza (comandos), que puede ser fácilmente scripted para guardar una captura de pantalla de la página web.

Cuestiones relacionadas