Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/06/2012, 09:57
raulbotella
 
Fecha de Ingreso: marzo-2007
Mensajes: 89
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Problema al redimensionar imagenes con PHP

Os pongo mi código:

Código PHP:
                @$datos_img = getimagesize($imagen);
                
$ancho_orig = $datos_img[0];
                
$alto_orig = $datos_img[1];
        
        
$propORIGINAL = devProporcion($ancho_orig,$alto_orig);
        
$propIMAGEN   = devProporcion($anchoLienzo,$altoLienzo);
             
        if(
$propORIGINAL<$propIMAGEN){
        
//Es mas panorámica que la ideal, dejamos blancos arriba y bajo            
            
$anchoIMAGEN = $anchoLienzo;
            
$altoIMAGEN = round($anchoIMAGEN/$propORIGINAL);            
            
$caso = "propORIGINAL<propIMAGEN";
            
//Volvemos a hacer comprobacion por si se sigue sobrepasando por el alto (REAJUSTE).
            
$margenAlto = ($altoLienzo - $altoIMAGEN)/2;
            
$margenAncho = 0;
            
            if(
$altoIMAGEN>$altoLienzo){
                
$altoIMAGEN = $altoLienzo;
                
$anchoIMAGEN = round($altoIMAGEN * $propORIGINAL);
                
                
$margenAncho = ($anchoLienzo - $anchoIMAGEN)/2;
                
$margenAlto  = 0;
            }
        }
        else{        
            
$altoIMAGEN = $altoLienzo;
            
$anchoIMAGEN = round($altoIMAGEN * $propORIGINAL);
            
$caso = "propORIGINAL>propIMAGEN";
            
//Volvemos a hacer comprobacion por si se sigue sobrepasando por el alto (REAJUSTE).
            
$margenAncho = ($anchoLienzo - $anchoIMAGEN)/2;
            
$margenAlto  = 0;
            
            if(
$anchoIMAGEN>$altoLienzo){
                
$anchoIMAGEN = $anchoLienzo;
                
$altoIMAGEN = round($anchoIMAGEN/$propORIGINAL);    
                
$margenAlto = ($altoLienzo - $altoIMAGEN)/2;
                
$margenAncho = 0;
            }
        }        
        
        
        
//    CREO LA NUEVA IMAGEN
        
$lienzo = imagecreatetruecolor($anchoLienzo, $altoLienzo);
        
        
//    Rellenamos el lienzo de color
        
imagefilledrectangle($lienzo, 0, 0, $anchoLienzo, $altoLienzo, 000000);

        
//    ABRO LA IMAGEN FUENTE
        
if (!$imagen_fuente = abrir_Imagen($imagen)) {
            return 
0;
            exit;
        }
                
        
//    COPIO LA IMAGEN FUENTE EN LA NUEVA
        //imagecopyresampled($lienzo, $imagen_fuente, $margenAncho, $margenAlto, 0, 0, $anchoIMAGEN, $altoIMAGEN, $anchoLienzo, $altoLienzo);
        
imagecopyresized($lienzo, $imagen_fuente, $margenAncho, $margenAlto, 0, 0, $anchoIMAGEN, $altoIMAGEN, $anchoLienzo, $altoLienzo);
                                
        
        
imagejpeg($lienzo, $destino, $calidad); 
Gracias!