2011-05-03 9 views
5

¿Cómo se puede renderizar y guardar una página web como una imagen en PHP, probablemente con un ancho de 600px? ¿Cómo puedo renderizar una página en PHP sin usar un navegador? ¿Cómo puedo guardarlo con una resolución dada y formato de imagen (jpeg)? La funcionalidad es similar a la vista previa de Google, excepto que no se mostrará en una renovación.¿Cómo se crea una imagen de una página web en PHP?

Similar a esta pregunta, que se responde en C#. How to save a web page as image

Gracias!

+0

posible duplicado de [¿Cómo guardar una página web como un archivo de imagen usando PHP?] (Http://stackoverflow.com/questions/3175392/how-to-save-webpage-as-a-image-file-using- php) –

+0

Cool. Gracias por todos los excelentes recursos! –

Respuesta

7

Debe obtener wkhtmltoimage, que es muy fácil de utilizar desde dentro de PHP:

exec("../wkhtmltoimage --crop-w 600 http://example.com/ output.png"); 

hay otras opciones, y en vez de --crop-w o --width 600 que podría ser mejor para bajar escala usando GD o imagemagick después.

+0

Gracias. Parece que solo se convierte a PDF y PS. Creo que podría usar otra biblioteca para convertir a jpg ... –

+0

No, hay dos versiones de la misma. El que encontraste es la versión 'wkhtmltopdf'. Pero también está el binario '..toimage', que es lo que quieres. (También es más fácil de usar.) – mario

+0

Encontré http://code.google.com/p/wkhtmltopdf/downloads/detail?name=wkhtmltoimage-0.10.0_beta2-static-amd64.tar.bz2&can=4&q= para wkhtltoimage, pero dice la versión 0.10 y privado. No hay documentación ... –

2

No se puede hacer esto en PHP puro, siempre necesitará un procesador externo para obtener un buen resultado.

Su mejor opción sería utilizar un servicio externo como el browsershots.org API, de esta manera no generará una carga adicional en su servidor.

Si tiene recursos para grabar, puede usar otro método (aún ejecutándose en su servidor, simplemente no PHP) llamado wkhtmltoimage como en mario's answer. Solo recuerde que esto no sería recomendable (de hecho, probablemente ni siquiera posible) en el alojamiento compartido.

+0

Eso parece una buena API de hecho. Lo comprobaré también (actualmente uso un servicio más escamoso en un proyecto ...) – mario

Cuestiones relacionadas