Foros del Web » Programando para Internet » PHP »

Redimensionar proporcionalmente

Estas en el tema de Redimensionar proporcionalmente en el foro de PHP en Foros del Web. Hola! Tengo un script que redimensiona imágenes JPEG... lo he modificado, y he intentado hacer que redireccione a un ancho fijo y hacer el ancho ...
  #1 (permalink)  
Antiguo 03/09/2009, 04:00
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 2 meses
Puntos: 7
Redimensionar proporcionalmente

Hola!

Tengo un script que redimensiona imágenes JPEG... lo he modificado, y he intentado hacer que redireccione a un ancho fijo y hacer el ancho solo (proporcionalmente).

Cuando el ancho es inferior al fijo (550px) funciona, pero cuando es mayor... Me pierdo

Este es el script:

Código PHP:
<?
$origen
="img/12"//Las imagenes son todas JPEG, pero con nombre numerico (id de imagen)

//Averiguar nuevo alto

$datosimg=getimagesize('img/12');

$ancho=$datosimg[0];

$alto=$datosimg[1];

if(
$ancho>550){

$difancho=550 $ancho;

}else{

$difancho=$ancho 550;

}

$nuevoalto=$alto $difancho;

$destino="img/12";
$destino_temporal=tempnam("tmp/","tmp");
redimensionar_jpeg($origen$destino_temporal550$nuevoalto100);



// guardamos la imagen
$fp=fopen($destino,"w");
fputs($fp,fread(fopen($destino_temporal,"r"),filesize($destino_temporal)));
fclose($fp);

// mostramos la imagen
echo "<img src='img/12'>";

function 
redimensionar_jpeg($img_original$img_nueva$img_nueva_anchura$img_nueva_altura$img_nueva_calidad)

    
// crear una imagen desde el original 
    
$img ImageCreateFromJPEG($img_original); 
    
// crear una imagen nueva 
    
$thumb imagecreatetruecolor($img_nueva_anchura,$img_nueva_altura); 
    
// redimensiona la imagen original copiandola en la imagen 
    
ImageCopyResized($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura,ImageSX($img),ImageSY($img)); 
     
// guardar la nueva imagen redimensionada donde indicia $img_nueva 
    
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
    
ImageDestroy($img);
}
?>
¿Cómo puedo lograr tener el alto proporcional y ajustar el ancho a 550?

Saludos
  #2 (permalink)  
Antiguo 03/09/2009, 05:16
Avatar de lyoung  
Fecha de Ingreso: noviembre-2005
Ubicación: Montevideo, la gran capit
Mensajes: 139
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Redimensionar proporcionalmente

No estoy seguro de que sea lo que precisas, pero yo uso este script que funciona bárbaro.
Le da a la imagen un ancho fijo y cambia su altura.
Si la altura supera un máximo, reduce el ancho.

Generá un archivo con el siguiente código:
Código PHP:
<?php

$anchura
=$_GET['ancho'];
$hmax=$_GET['altura'];

$nombre=$_GET['foto'];
$datos getimagesize($nombre);
if(
$datos[2]==1){$img = @imagecreatefromgif($nombre);}
if(
$datos[2]==2){$img = @imagecreatefromjpeg($nombre);}
if(
$datos[2]==3){$img = @imagecreatefrompng($nombre);}
$ratio = ($datos[0] / $anchura);
$altura = ($datos[1] / $ratio);
if(
$altura>$hmax)
{
$anchura2=$hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;}
$thumb imagecreatetruecolor($anchura,$altura);
imagecopyresampled($thumb$img0000$anchura$altura$datos[0], $datos[1]);
if(
$datos[2]==1){header("Content-type: image/gif"); imagegif($thumb);}
if(
$datos[2]==2){header("Content-type: image/jpeg");imagejpeg($thumb);}
if(
$datos[2]==3){header("Content-type: image/png");imagepng($thumb); }
imagedestroy($thumb);
?>
Lo guardas como redimensionar.php.

En donde debería ir la imagen ponés lo siguiente:
Código HTML:
<img src="redimensionar.php?ancho='anchofijo'&altura='alturamaxima'&foto='nombredeimagen'"> 
Donde anchofijo es el número de píxeles que querés de máximo
alturamaxima es el número de píxeles que querés como máximo
nombredeimagen es el nombre de la imagen (incluyendo la ruta de acceso)

Es una adaptación que saqué de algún lado, pero no me acuerdo donde.

Suerte
__________________
Todo se ve mejor si le miramos el lado positivo.
  #3 (permalink)  
Antiguo 03/09/2009, 07:04
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: Redimensionar proporcionalmente

Muchísimas gracias funciona a la perfección

Un saludo
  #4 (permalink)  
Antiguo 04/09/2009, 05:30
Avatar de lyoung  
Fecha de Ingreso: noviembre-2005
Ubicación: Montevideo, la gran capit
Mensajes: 139
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Redimensionar proporcionalmente

Excelente.
Me alegro pila

Entre otras cosas, porque veo que ha llegado la hora en que yo también puedo ayudar.

Saludos
__________________
Todo se ve mejor si le miramos el lado positivo.
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 07:50.