Inicio  |  Noticias  |  Foro  |  Blogs  |  Galerías  |  Eventos  |  Reportajes 
    Ca l'Avi Blogs
Hola Visitante   Registrate   Logueate 

Como disminuir el peso de las imágenes con PHP (Parte 2)
oscar - 13-11-2009

En el post anterior comentaba que el procesado de imágenes hacía que la web fuera excesivamente lenta, por ejemplo con una linea fibra de 8MB, la web me tardaba entre 20 y 24 segundos en cargarse, sobre todo al hacer el thumbnail de las imágenes.

Imaginados convertir 20 imágenes de más de 1MB a thumbnails pequeños de menor peso varias veces al día, anque el tráfico es menor, el consumo de tiempo y sobre todo de CPU, puede hacer que el visitante de canse de la lentitud de la página, o que el proveedor de hosting te cierre la página por consumo de CPU.

Para aligerar la conversión me planteé el caso de que si una imágen de 2048x1536 pixels, ¿porqué no la convertía durante el upload creando los thumbnails que me hicieran falta? así reduzco el peso de la imagen, el tamaño y al crear el thumbnail de una imágen pequeña me tarda menos.

Así que modifiqué el código del script up.php para subir imágenes que usaba en el post de como subir múltiples archivos, solo pondré el añadido que le hago:

//creamos thumbnail
$ext = array ("jpg","png","gif");
$optimizar = 90; //  VALOR DE OPTIMIZACION
$nombre_archivo = $filename;           
$altura_nueva = 450;
$foto = "/galeria/" . $galeria . "/" . $_FILES[´Filedata´][´name´];
           
$extensiones = substr($foto, -4);
$archivosinext = substr($foto, 0, -4);
$archivo = pathinfo($foto);
if (in_array(strtolower($archivo[´extension´]),$ext))
{
    if(strtolower($archivo[´extension´])=="gif"){
        $img = imagecreatefromgif($foto);
    }else if(strtolower($archivo[´extension´])=="jpg"){
        $img = imagecreatefromjpeg($foto);
    }else if(strtolower($archivo[´extension´])=="png"){
        $img = imagecreatefrompng($foto);
    }
    $ancho = imagesx($img);
    $altura = imagesy($img);
    $ancho_nuevo = floor($ancho*($altura_nueva/$altura));
    $tmp_img = imagecreatetruecolor($ancho_nuevo,$altura_nueva);
    imagecopyresized($tmp_img,$img,0,0,0,0,$ancho_nuevo,$altura_nueva,$ancho,$altura);

    if(strtolower($archivo[´extension´])=="gif"){
        imagegif( $tmp_img,$archivosinext . "_thumb" . $extensiones);
    }else if(strtolower($archivo[´extension´])=="jpg"){
        imagejpeg( $tmp_img,$archivosinext . "_thumb" . $extensiones,$optimizar);
    }else if(strtolower($archivo[´extension´])=="png"){
        imagepng( $tmp_img,$archivosinext . "_thumb" . $extensiones);
    }
}

Este añadido lo que viene hacer, a parte de subir la imágen con el tamaño original, es crear un thumbnail de 450px de altura (el ancho lo calculamos en relación con el ancho y alto original), posteriormente creamos la misma imágen pero le ponemos la marca _thumb, quedando por ejemplo DSCN_0234_thumb.JPG pero ya con un peso y resolución más optimizado.

Finalmente, se hace la llamada al thumbnail:

<img src="scripts/thumbnails.php?ruta=directorio/foto.jpg&ancho=220&alto=165" />

Y los resultados son notables:

Tiempo de carga de la Web de Calavi

Hemos pasado de una media de 22 segundos a 3.6 segundos.

 Comentarios


02-10-2014 Notificar Abuso
04-10-2014 Notificar Abuso
12-10-2014 Notificar Abuso
13-10-2014 Notificar Abuso
16-05-2016 Notificar Abuso
16-05-2016 Notificar Abuso
08-08-2016 Notificar Abuso
14-08-2016 Notificar Abuso
24-09-2016 Notificar Abuso

Para poder comentar has de estar logado en Ca l'Avi


Artículos anteriores

Redondear decimales, hacia arriba y hacia abajo en PHP
Como crear URLs amigables con PHP
Como disminuir el peso de las imágenes con PHP (Parte 2)
Como disminuir el peso de las imágenes con PHP
Como subir múltiples ficheros

 Ver todos 



Resolución mínima de 1024x768© - Portal desarrollado por Softilus para Calavi.net - Copyright 2009, todos los derechos reservados