Foros del Web » Programando para Internet » PHP »

Redimensionar una imagen (si es preciso)

Estas en el tema de Redimensionar una imagen (si es preciso) en el foro de PHP en Foros del Web. Tengo una aplicación en la que los usuarios suben una imagen y esa imagen sale luego en un documento .htm. Pero mis usuarios son muy ...
  #1 (permalink)  
Antiguo 07/12/2004, 13:02
Avatar de tognaco  
Fecha de Ingreso: noviembre-2004
Mensajes: 147
Antigüedad: 19 años, 5 meses
Puntos: 1
Redimensionar una imagen (si es preciso)

Tengo una aplicación en la que los usuarios suben una imagen y esa imagen sale luego en un documento .htm. Pero mis usuarios son muy brutos y a veces me suben imágenes enormemente grandes. Quisiera poder hacer lo siguiente: si la altura de la imagen supera los 290 píxeles, que GD la convierta (proporcionalmente, claro) a 290 píxeles de altura. No se trata de hacer thumbnails, ya que no deseo guardar una imagen grande y una pequeña; sólo quiero que la grande sea redimensionada a 290 píxeles de altura y nunca vuelva a su tamaño original (quiero que ocupen un espacio razonable).
Gracias anticipadas.
  #2 (permalink)  
Antiguo 07/12/2004, 13:14
 
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona - España
Mensajes: 270
Antigüedad: 21 años, 5 meses
Puntos: 0
$exte=".jpg";
$yafoto=($nomgos . $buffer . $exte);
$path = "../images3";
$max_size = 250000;
if (is_uploaded_file($userfile)) {
if ($userfile_size>$max_size) { echo "EL ARCHIVO ES DEMASIADO GRANDE (max. 250 KB).<br>\n"; exit; }
if (($userfile_type=="image/gif") || ($userfile_type=="image/pjpeg")) {
if (file_exists($path . $userfile_name)) { echo "EL ARCHIVO YA EXISTE.<br>\n"; exit; }
$res = copy($userfile, $path . $userfile_name);
if (!$res) {
echo "Error al subir la imágen!<br>\n"; exit; }
else
echo "La imagen se ha subido con exito<br>\n";
// echo "Nombre del Archivo: $userfile_name<br>\n";
// echo "Tamaño del Archivo: $userfile_size bytes<br>\n";
// echo "Formato del Archivo: $userfile_type<br>\n";

$img=imagecreatefromjpeg($userfile);
$bx=imagesx($img);
$by=imagesy($img);
$my=200;
$mx=intval($my*$bx/$by);
$im=imagecreatetruecolor ($mx, $my);
imagecopyresampled ($im, $img, 0, 0, 0, 0, $mx, $my, $bx, $by);
imagejpeg($im,"tu_ruta/$yafoto",75);
unlink($path . $userfile_name);
Aqui tienes un ejemplo
  #3 (permalink)  
Antiguo 07/12/2004, 13:50
Avatar de tognaco  
Fecha de Ingreso: noviembre-2004
Mensajes: 147
Antigüedad: 19 años, 5 meses
Puntos: 1
Muchas gracias. Tardaré un poco en descifrarlo pero por lo menos tengo por donde empezar.
  #4 (permalink)  
Antiguo 07/12/2004, 14:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Principalmente lo que te interesa es este cálculo:

Código PHP:
$bx=imagesx($img);
$by=imagesy($img);
$my=200;
$mx=intval($my*$bx/$by); 
Ahí se toma el tamaño de tu imagen y se hace la proporción dejando un fijo a X pixels. Si hablas de que si el tamaño es menor al que mencionas no ha de hacer ningún ajuste de proporción tendrás que usar un "if()" basado en ese $by ... si no me equivoco.

Un saludo,
  #5 (permalink)  
Antiguo 08/12/2004, 11:11
Avatar de tognaco  
Fecha de Ingreso: noviembre-2004
Mensajes: 147
Antigüedad: 19 años, 5 meses
Puntos: 1
OK, muchas gracias
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 16:41.