PHP - thumb con php

 
Vista:

thumb con php

Publicado por jonyboy (1 intervención) el 12/07/2007 20:13:46
estoy haciendo una pagina en la cual se permite subir imagenes pero se requiere que de esas imagenes se haga un thumb para poner una galeria el problema es que al hacer el thumb algunas imagenes se deforman no se si alguien sepa alguna formula para hacer los thumbs sin que se deformen
el tamaño maximo de los thumbs es de 48 x 48 esta es la funcion que utilizo para crear los thumbs

<?
function thumbjpeg($imagen) {
$dir_thumb = "./thumb/";
$prefijo_thumb = "tn_";
$camino_nombre=explode("/",$imagen);
$camino_old='./imagenes/';
$nombre=end($camino_nombre);
$camino=substr($imagen,0,strlen($imagen)-strlen($nombre));
if (!file_exists($camino.$dir_thumb.$prefijo_thumb.$nombre)) {
$img = imagecreatefromjpeg($camino_old.$nombre) or die("No se encuentra la imagen $camino$nombren");

$altura = 48;
$anchura =48;
$thumb=imagecreatetruecolor( $altura, $anchura);
imagecopyResized ($thumb,$img, 0, 0, 0, 0,$altura,$anchura, $datos[0], $datos[1]);
imagejpeg($thumb,$camino.$dir_thumb.$prefijo_thumb.$nombre);
}
}
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:thumb con php

Publicado por Diego Romero (1450 intervenciones) el 12/07/2007 22:22:58
Veo que no estás escalando la imagen, sino simplemente redimensionarla a 48 x 48.

Acá hay un código que escala la imagen por altura:

<?php
function thumbjpegan($imagen,$altura) {

$nombre_final = "";
$dir_thumb = "thumbs/";

$prefijo_thumb = "tmb_";
$camino_nombre=explode("/",$imagen);
$nombre=end($camino_nombre);
$camino=substr($imagen,0,strlen($imagen)-strlen($nombre));

if (!file_exists($camino.$dir_thumb))
mkdir ($camino.$dir_thumb, 0777) or die("No se ha podido crear el directorio $dir_thumb");

if (!file_exists($camino.$dir_thumb.$prefijo_thumb.$nombre)) {

$img = imagecreatefromjpeg($camino.$nombre) or die("No se encuentra la imagen $camino$nombre<br>n");

$datos = getimagesize($camino.$nombre) or die("Problemas con $camino$nombre<br>n");

$ratio = ($datos[0] / $altura);
$anchura = round($datos[1] / $ratio);

$thumb = imagecreatetruecolor($altura,$anchura);

imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $altura, $anchura, $datos[0], $datos[1]);

$nombre_final = $camino.$dir_thumb.$prefijo_thumb.$nombre;

imagejpeg($thumb,$nombre_final);

return $nombre_final;
}
}
?>

La función espera que le pases el path y nombre de la imagen original y la altura máxima que deseas (48 en tu caso) y te devuelve el path y el nombre de la miniatura creada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar