miniatura webOtro dí­a, otra idea, y lo que necesitaba hoy era, ¿como puedo hacer una miniatura de una pagina web?
Pues como casi todo en internet, usando servicios online... Entre los servicios online que me ofrecí­an esto he encontrado mas de 20, pero casi ninguno realizaba el servicio en realidad. Algunos me ofrecí­an la posibilidad de cambiar de navegador, otros el tamaño, pero casi todos tení­an un tiempo de espera para generar la imagen de la web pedida.
Por eso he seleccionado 3. Los 3 que mejor me funcionaron.
La función miniatura_web() utiliza 2 variables fijas y otras 2 que son validas para algunos servicios.
La primera variable, $url, contiene la dirección web de la que sacaremos la imagen y la segunda, $servicio indica cual de los 3 servicios es valido. Las opciones para la variable servicio son: ipinfo, browsercamp, y thumbalizr. La función puede utilizarse sin introducir mas parámetros que la URL a capturar, pero para añadir mejor manejo o mejor respuesta en carga de imagen tenemos las 3 posibilidades.
Ipinfo muestra una captura de imagen de 1.016x741px, por lo que recorta todas las web en anchura. Muestra una imagen de tipo PNG.
browsercamp es mas personalizable. Nos permite seleccionar entre 5 tipos de tamaño que van entre los 800px y los 1600px. Para cambiar el tamaño solo hay que introducir el numero del 1 al 5 en la 3º variable de la función. Por defecto esta en 800px. A demás browsercamp permite determinar si queremos que nos de la imagen en PNG o en JPG, y si seleccionamos la 2º opción nos permite decidir entre 3 opciones de calidad. Esto se introducirí­a en el 4º valor. Los valores permitidos serian: png para devolver un archivo de tipo PNG, high, medium y low, los 3 modos de calidad de imagen para una salida de archivo de JPG. Como añadido, este servicio da 2 tipos de resultado, una miniatura de la web original y la web grande. Estas se dan en el resultado en forma de array.
thumbalizr es la mención honorí­fica, ya que tenia la API... Es un servicio que mientras generan la imagen ponen otra que indica que esta en proceso. por tanto no tenemos el efecto inmediato que tení­amos con las otras funciones. Permite adaptar la anchura como el modelo anterior, con los 5 valores.

La función:

PHP:
  1. function miniatura_web($url, $servicio = "browsercamp", $tamanio = "1", $calidad = "high"){
  2.  
  3.     $tamanios = array("800", "832", "1024", "1280", "1600");
  4.     $calidades = array("png" => "1", "high" => "2", "medium" => "3", "low" => "4");
  5.    
  6.     if("ipinfo" == $servicio){
  7.         $sevicios = 'http://ipinfo.info/netrenderer/index.php?browser=ie7&url='.$url;
  8.        
  9.         $exp_info = '!http://renderer.geotek.de/image.php\?imgid=(.+)&browser=ie7!U';
  10.         $query = @file_get_contents($sevicios);
  11.         preg_match_all($exp_info, $query, $info);
  12.        
  13.         $s = $info[0][0];
  14.         return $s;
  15.     }
  16.     if("browsercamp" == $servicio){
  17.         $sevicios  = "http://www.browsrcamp.com/?get=1&width=".$tamanios[$tamanio]."&url=".$url;
  18.         $sevicios .= "&quality=".$calidades[$calidad];
  19.        
  20.         $exp_info = '!<a href="(.+)" target="_blank">!U';
  21.         $query = @file_get_contents($sevicios);
  22.         preg_match_all($exp_info, $query, $info);
  23.        
  24.         $s = array(
  25.             "full" => $info[1][0],
  26.             "thumb" => str_replace("full", "thumb", $info[1][0])
  27.         );
  28.         return $s;
  29.     }
  30.     if("thumbalizr" == $servicio){
  31.         $s = "http://www.thumbalizr.com/api/?url=".$url."&width=".$tamanios[$tamanio];
  32.         return $s;
  33.     }
  34. }

Con lo anterior creo que solo queda que os deje un ejemplo de cada y ya hacéis las pruebas de velocidad cada uno como queráis.

Ejemplo básico (pagina a tamaño completo con browsercamp:

PHP:
  1. $imagen = miniatura_web("http://www.tierra0.com");
  2. echo '<img src="'.$imagen.'"><br>';

Ejemplo ipinfo:

PHP:
  1. $imagen = miniatura_web("http://www.tierra0.com", "ipinfo");
  2. echo '<img src="'.$imagen.'"><br>';

Ejemplo browsercamp completo:

PHP:
  1. $imagen = miniatura_web("http://www.tierra0.com", "browsercamp", "1", "png");
  2. echo '<img src="'.$imagen['full'].'"><br>';

Ejemplo browsercamp miniatura:

PHP:
  1. $imagen = miniatura_web("http://www.tierra0.com", "browsercamp", "1", "png");
  2. echo '<img src="'.$imagen['thumb'].'"><br>';

Ejemplo thumbalizr:

PHP:
  1. $imagen = miniatura_web("http://www.tierra0.com", "thumbalizr", "1");
  2. echo '<img src="'.$imagen.'"><br>';

Actualización: Corregida la función en las lineas 1, carácter uno y linea 8 ultimas comillas.
Los ejemplos fueron divididos. Si se utilizan varios a la vez hay que plantearse el aumento del tiempo de ejecución de los script