Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/11/2005, 15:02
franz_fqm
 
Fecha de Ingreso: julio-2005
Mensajes: 36
Antigüedad: 18 años, 8 meses
Puntos: 0
Cita:
Iniciado por luisetto
Muy buenas, tengo la siguiente función que cuando yo le paso una imagen y el valor de la altura me la redimensiona, me gustaria si alguien me puede ayudar (yo lo he intentado pero me ha salido la imagen estirada y mal) que en vez de con la altura haga lo mismo pero con la anchura.
MUCHISIMAS GRACIAS



Código PHP:
<?

function thumbjpeg($imagen,$altura) { 
     
// Lugar donde se guardarán los thumbnails respecto a la carpeta donde está la imagen "grande". 
     
$dir_thumb "thumbs/"
     
// 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_"

     
// Aquí tendremos el nombre de la imagen. 
     
$nombre=basename($imagen); 
     
// Aquí la ruta especificada para buscar la imagen. 
     
$camino=dirname($imagen)."/"

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

     
// Aquí comprovamos que la imagen que queremos crear no exista previamente 
     
if (!file_exists($camino.$dir_thumb.$prefijo_thumb.$nombre)) { 
          echo 
$camino.$dir_thumb.$prefijo_thumb.$nombre." No existía<br>\n"
          
$img imagecreatefromjpeg($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 
          
imagecopyresampled ($thumb$img0000$anchura$altura$datos[0], $datos[1]); 

          
// voilà la salvamos con el nombre y en el lugar que nos interesa. 
          
imagejpeg($thumb,$camino.$dir_thumb.$prefijo_thumb.$nombre); 
     } 


 
?>
Hola lo que pasa es que este script solo es valido para aquellas imagenes donde se trata de escalar solo a la altura es decir que solo funciona para casos en que el alto de la imagen original es mayor al ancho de la misma, y por ende al que tratamos de escalar y no asi para aquellas en que el alto de la imagen es menor al ancho(alto>ancho funciona, ancho>alto no funciona-distorsion).
Para no redundar el codigo en el foro te recomiendo que veas la lista de temas o FAQ's http://www.forosdelweb.com/f18/indice-tematico-las-faqs-php-143918/ que hay en este foro y veas el tratamiento de imagenes ahí encontraras scripts para que funcionen con dos parametros, espero que veas la lista por que ahí, hay muchos temas mas interesantes para el tratamiento de imagenes en PHP. Hasta la proxima.


Solo te aconsejo lo que aprendi aqui