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.016×741px, 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