Foros del Web » Programando para Internet » PHP »

Crear miniaturas con php

Estas en el tema de Crear miniaturas con php en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 05/11/2013, 16:10
 
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);
    }
}
  #2 (permalink)  
Antiguo 05/11/2013, 16:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Crear miniaturas con php

Bueno, si comparas peras con manzanas es un hecho que jamás van a ser igual.

Cita:
[...] cuando reduzco a 95 pixel una imagen con algun programa de diseño de imagen, no se ve borrosa como pasa aqui.
PHP no es un programa de diseño y la extensión GD2 tampoco es profesional, así que no esperes resultados profesionales de ningún modo.

Si buscas una librería profesional compatible con PHP te sugiero investigar acerca de ImageMagick.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/11/2013, 05:35
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 3 meses
Puntos: 21
Respuesta: Crear miniaturas con php

Si el cambio de medidas es muy grande, la foto se degrada.
Se debe utilizar para ajustes no muy mayores.
Existen utilizarías profesionales para ello.

Etiquetas: miniaturas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:31.