Foros del Web » Programando para Internet » PHP »

[Aporte] : Como redimencionar y recortar una imagen con php

Estas en el tema de [Aporte] : Como redimencionar y recortar una imagen con php en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 14/10/2010, 09:58
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 19 años, 2 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!!!!

Etiquetas: recortar, redimencionar, aportes
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 19:25.