Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/10/2010, 09:58
Avatar de kaninox
kaninox
 
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Sonrisa [Aporte] : Como redimencionar y recortar una imagen con php

Bueno scripts sobre esto y temas encontré bastantes en Internet pero todos los ejemplos que encontraba eran agregando 1 imagen en una función, y llamados del estilo <img src="miscript.php" />.
y lo que yo necesitaba era pasar una variable a través de una base de datos bucle tipo while e ir cortando y redimensionando imágenes para que un álbum por ejemplo se viera todo del mismo tamaño.

La idea tener algo como :

Código PHP:
Ver original
  1. echo "<img src=\"rd.php?archivo=$MIVARIABLE&amp;alto=150&amp;ancho=150\" border=\"0\" alt=\"\" title=\"\" />";

Esto utilizando el redimencionador básico de okram.

En donde yo en la imagen le entrego el archivo redimencionador rd.php en este caso, mi variable de imagen entregada en $archivo y mi alto y ancho a gusto.
en donde $MIVARIABLE vendría siendo el nombre de mi imagen que recojo de base de datos por ejemplo.

Entonces viendo un poco de GD logre añadir unas cuantas lineas al redimencionador de imágenes solo para que efectué un corte a la imagen y estas mantengan la simetría y que me acepte imágenes del tipo .png .jpg y gif.

Entonces les dejo el redimencionador espero que a alguien le sirva ;)

rd.php
Código PHP:
Ver original
  1. <?php
  2. $anchura = $_GET['ancho'];
  3. $hmax = $_GET['alto'];
  4. $nombre = $_GET['archivo'];
  5. $datos = getimagesize($nombre);
  6. $eje_x = $datos[0]; $eje_y = $datos[1];  
  7. if (($datos[0] <= $anchura) && ($datos[1] <= $hmax))
  8. {
  9. readfile($nombre);
  10. }
  11. else
  12. {  
  13. if($datos[2]==1){$img = @imagecreatefromgif($nombre);}
  14. if($datos[2]==2){$img = @imagecreatefromjpeg($nombre);}
  15. if($datos[2]==3){$img = @imagecreatefrompng($nombre);}
  16. if($anchura/$eje_x > $hmax/$eje_y) {
  17. $nw = $anchura;
  18. $nh = ($eje_y * $nw) / $eje_x;
  19. $px = 0;
  20. $py = ($hmax - $nh) / 2;
  21. } else {
  22. $nh = $hmax;
  23. $nw = ($eje_x * $nh) / $eje_y;
  24. $py = 0;
  25. $px = ($anchura - $nw) / 2;
  26. }    
  27. $ratio = ($datos[0] / $anchura);
  28. $altura = ($datos[1] / $ratio);
  29. if($altura>$hmax){$anchura2=$hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;}
  30. $thumb = imagecreatetruecolor($anchura,$altura);
  31. imagecopyresampled($thumb, $img, $px, $py, 0, 0, $nw, $nh, $eje_x, $eje_y);
  32. if($datos[2]==1){header("Content-type: image/gif"); imagegif($thumb);}
  33. if($datos[2]==2){header("Content-type: image/jpeg");imagejpeg($thumb);}
  34. if($datos[2]==3){header("Content-type: image/png");imagepng($thumb); }
  35. imagedestroy($thumb);
  36. }
  37. ?>

Saludos
__________________
Gokuh Salvo al mundo. PUNTO!!!!