2010-07-27 13 views
10

Ok, en este momento no puedo pagar ningún servicio. Quiero poder tomar capturas de pantalla usando mi servidor alquilado, que está basado en Linux, y darles salida en la pantalla.Captura de pantalla del sitio web, del lado del servidor, en un servidor alquilado de Linux, gratis

Sé que hay muchos servicios que hacen esto, pero generalmente tienen límites o marcas de agua, o tiene que esperar a que se tome su captura de pantalla de la cola.

¿Hay alguna manera de simplemente tomar las capturas de pantalla yo mismo y quizás luego guardarlas en caché o algo? Estoy usando PHP, pero no estoy limitado a eso; Solo estoy en un servidor Linux, por lo que las funciones apropiadas de GD no funcionarían. ¡Ayuda! :)

Respuesta

10

PhantomJs is the solution

if(phantom.state.length === 0){ 
    phantom.state = '0_home'; 
    phantom.open('http://www.mini.de'); 
} 
else if(phantom.state === '0_home'){ 
    phantom.viewportSize = {width: 800, height: 600}; 
    phantom.sleep(2000); 
    phantom.render('home.png'); 
    phantom.exit(0); 
} 
+2

Muy buen enlace, gracias por compartir! – Kirzilla

+0

¿qué pasa con los sitios web en chino y otras secuencias de comandos que romana. – Vish

+1

Creo que los phantomjs deberían funcionar sin problemas. Si webkit puede representar la página, phantomjs debería poder tomar una captura de pantalla. – cromulus

9

http://cutycapt.sourceforge.net/

CutyCapt es una utilidad de línea de comandos multiplataforma pequeño para capturar la representación de una página web por parte de WebKit en una variedad de formatos vectoriales y de mapa de bits, incluyendo SVG, PDF, PS, PNG, JPEG, TIFF, GIF y BMP.

No hay PHP-api, pero siempre puede usarlo a través de las funciones exec de PHP.

+0

¿Crees que podría ejecutarlo con un servidor alojado? – casraf

+0

¿No lo crees? – Kirzilla

+0

[Timthumb] (http://code.google.com/p/timthumb/) proporciona acceso a cutycapt, que puede ayudar con el problema de "no PHP-api". – Nick

5

Aquí es una secuencia de comandos mejor usando PhantomJS 1,5

var page = require('webpage').create(); 

page.open('http://www.google.com', function() { 

    page.viewportSize = {width: 1024, height: 768}; 
    page.render('screenshot.png'); 
    phantom.exit(); 
}); 
+2

Brad: es posible que necesite PhantomJS 1.5. En esa versión, esto funcionó bien conmigo. – Husky

+0

Tienes razón ... Esto solo funcionará en la versión 1.5 Gracias por aclarar. – Brad

1

Una de las soluciones en 2017:

https://github.com/GoogleChrome/puppeteer

ejemplo:

const puppeteer = require('puppeteer'); 

(async() => { 

const browser = await puppeteer.launch(); 
const page = await browser.newPage(); 
await page.goto('https://example.com'); 
await page.screenshot({path: 'example.png'}); 

browser.close(); 
})(); 
Cuestiones relacionadas