Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/11/2013, 16:10
crash_rpm
 
Fecha de Ingreso: agosto-2012
Ubicación: Almeria
Mensajes: 50
Antigüedad: 11 años, 8 meses
Puntos: 0
Crear miniaturas con php

Me dado cuenta que las miniaturas se estaban subiendo con unas medidas mas grandes de las que se muestran, pienso que si se suben con las medidas exactas de como se van a mostrar, ahorro el tiempo que se pierde en escalarlas cada vez que se entra en la pagina.

Explicado esto os comento el problema, ahora mismo las miniaturas se estan reduciendo a 200 pixel pero si cambio el valor para que las reduzca a 95 pierden muchisima calidad. Yo por ejemplo cuando reduzco a 95 pixel una imagen con algun programa de diseño de imagen, no se ve borrosa como pasa aqui.
Os muestro la funcion a ver si es que estoy utilizando alguna funcion que reduce mal las fotos o le quita mucha calidad.

Código:
LLAMADA
thumbjpeg($miniatura, 200);

FUNCION
function thumbjpeg($imagen, $altura) {

// Lugar donde se guardarán los thumbnails respecto a la carpeta donde está la imagen "grande".
    $dir_thumb = "tn/";

// Prefijo que se añadirá al nombre del thumbnail. Ejemplo: si la imagen grande fuera "imagen1.jpg",
// el thumbnail se llamaría "tn_imagen1.jpg"
    $prefijo_thumb = "tn_";
    $camino_nombre = explode("/", $imagen);

// Aquí tendremos el nombre de la imagen.
    $nombre = end($camino_nombre);

// Aquí la ruta especificada para buscar la imagen.
    $camino = substr($imagen, 0, strlen($imagen) - strlen($nombre));

// Intentamos crear el directorio de thumbnails, si no existiera previamente.
    if (!file_exists($camino . $dir_thumb))
        mkdir($camino . $dir_thumb, 0777) or die("No se ha podido crear el directorio $dir_thumb");

// Aquí comprobamos que la imagen que queremos crear no exista previamente
    if (!file_exists($camino . $dir_thumb . $prefijo_thumb . $nombre)) {
         if(extension($nombre) == 'jpg' || extension($nombre) == 'JPG')
            $img = imagecreatefromjpeg($camino . $nombre) or die("No se encuentra la imagen $camino$nombre<br>n");
         else
            $img = imagecreatefrompng($camino . $nombre) or die("No se encuentra la imagen $camino$nombre<br>n");
// miramos el tamaño de la imagen original...
        $datos = getimagesize($camino . $nombre) or die("Problemas con $camino$nombre<br>n");

// intentamos escalar la imagen original a la medida que nos interesa
        $ratio = ($datos[1] / $altura);
        $anchura = round($datos[0] / $ratio);

// esta será la nueva imagen reescalada
        $thumb = imagecreatetruecolor($anchura, $altura);

// con esta función la reescalamos.  Si preferimos tener una calidad menor pero que cargue más rapido
// podemos sustituirla por imagecopyresized()
        imagecopyresampled($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
//        imagecopyresized($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
        //imagecopyresized(... )    //Menos calidad, mas rapido.

// voilà la salvamos con el nombre y en el lugar que nos interesa.
        require_once(LIBRARY_PATH . "/funciones.php");
        if(extension($nombre) == 'jpg'  || extension($nombre) == 'JPG')
            imagejpeg($thumb, $camino . $dir_thumb . $prefijo_thumb . $nombre);
        else
            imagepng($thumb, $camino . $dir_thumb . $prefijo_thumb . $nombre);
    }
}