Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/04/2011, 13:36
Avatar de softmaster
softmaster
 
Fecha de Ingreso: diciembre-2008
Mensajes: 230
Antigüedad: 17 años, 9 meses
Puntos: 12
Respuesta: Configuracion libreria GD

este es el script uso para redimensionar


Código PHP:
    //Copyright © McAnam.com 
    
function iPintaImagenRedimensionada ($sDirImagen, $bEscalable, $ancho, $alto, $iTipo){
        
$sDirImagen="http://www.dominio.com/foto.jpg"; 
$bEscalable="0"; 
$ancho="300"; 
$alto="0"; 
$iTipo="2"; 
        
// Cogemos los datos de la imagen 
        
$vDatosImg = @getimagesize($sDirImagen); 

        if (!
$vDatosImg) return -8; 

        
// Recogemos el Tipo Mime 
        
if (isset($vDatosImg['mime'])) 
            
$sTipo = $vDatosImg['mime']; 
        else if(isset(
$vDatosImg[2])) 
            
$sTipo = image_type_to_mime_type($vDatosImg[2]); 
        else if (isset(
$iTipo)) 
            
$sTipo = image_type_to_mime_type($iTipo); 
        else 
            return -
10; 
        
// Recogemos la imagen a partir de la dirección dada ($sDirImagen) 
        
switch($vDatosImg[2]){ 
            case 
IMAGETYPE_GIF: 
                
$imgOrigen = imagecreatefromgif($sDirImagen); 
                break; 
            case 
IMAGETYPE_JPEG: 
                
$imgOrigen = imagecreatefromjpeg($sDirImagen); 
                break; 
            case 
IMAGETYPE_PNG: 
                
$imgOrigen = imagecreatefrompng($sDirImagen); 
                break; 
            case 
IMAGETYPE_SWF: 
            case 
IMAGETYPE_PSD: 
            case 
IMAGETYPE_BMP: 
            case 
IMAGETYPE_TIFF_II: 
            case 
IMAGETYPE_TIFF_MM: 
            case 
IMAGETYPE_JPC: 
            case 
IMAGETYPE_JP2: 
            case 
IMAGETYPE_JPX: 
            case 
IMAGETYPE_JB2: 
            case 
IMAGETYPE_SWC: 
            case 
IMAGETYPE_IFF: 
                return -
11; 
                break; 
            case 
IMAGETYPE_WBMP: 
                
$imgOrigen = imagecreatefromwbmp($sDirImagen); 
                break; 
            case 
IMAGETYPE_XBM: 
                
$imgOrigen = imagecreatefromxbm($sDirImagen); 
                break; 
            default: 
                return -
13; 
                break; 
        } 

        
/* 
            Establecemos los tamaños: 
                - Si bEscalable viene como true. 
                 Se multiplican los valores recibidos para ancho y alto 
                 por el ancho y alto de la imagen, 
                 así 0.5 sería la mitad de la imagen y 2 sería el doble 
                - Si bEscalable viene como false. 
                 Los tamaños serán los pasados por ancho y alto directamente 
                - Si ancho o alto vienen como 0 o numero negativo, 
                 el valor de esta propiedad será asignada proporcionalmente con 
                 el valor de la otra. 
                - Si ancho y alto vienen como 0 o numero negativo, Error 
        */ 

        
if (!(is_numeric($ancho)) || !(is_numeric($alto))) return -20; 

        if (
$bEscalable){ 
            if (
$ancho > 0){ 
                
$ancho *= $vDatosImg[0]; 
                if (
$alto > 0) $alto *= $vDatosImg[1]; 
                else 
$alto = $vDatosImg[1] * ($ancho / $vDatosImg[0]); 
            }else if (
$alto > 0){ 
                
$alto *= $vDatosImg[1]; 
                
$ancho = $vDatosImg[0] * ($alto / $vDatosImg[1]); 
            }else{ 
                return -
21;     
            } 
        }else{ 
            if ((
$ancho > 0) && ($alto < 1)) 
                
$alto = $vDatosImg[1] * ($ancho / $vDatosImg[0]); 
            else if ((
$alto > 0) && ($ancho < 1)) 
                
$ancho = $vDatosImg[0] * ($alto / $vDatosImg[1]); 
            else if ((
$alto < 1) && ($ancho < 1)) 
                return -
21;     

        } 

        
// Se crea la nueva imagen redimensionada 
        
if (function_exists("ImageCreateTrueColor")) 
            
$imgDestino = ImageCreateTrueColor($ancho,$alto); 
        else 
            
$imgDestino = ImageCreate($ancho,$alto); 

        
ImageCopyResized ($imgDestino, $imgOrigen, 0, 0, 0, 0, $ancho, $alto, $vDatosImg[0], $vDatosImg[1]); 

        
/* 
            Se envía la cabecera de los datos de la imagen. 
            Cuando llegue aquí no debe de haber sido enviado NADA. 
            Si se ha enviado algo, aunque fuera un "intro" o espacio daría error 
        */ 
        
header("Content-type: ".$sTipo); 

        
// Se pinta la imagen según el tipo 
        
switch($vDatosImg[2]){ 
            case 
IMAGETYPE_GIF: 
                
imagegif($imgDestino); 
                break; 
            case 
IMAGETYPE_JPEG: 
                
imagejpeg($imgDestino, $save_view); 
                break; 
            case 
IMAGETYPE_PNG: 
                
imagepng($imgDestino); 
                break; 
            case 
IMAGETYPE_SWF: 
            case 
IMAGETYPE_PSD: 
            case 
IMAGETYPE_BMP: 
            case 
IMAGETYPE_TIFF_II: 
            case 
IMAGETYPE_TIFF_MM: 
            case 
IMAGETYPE_JPC: 
            case 
IMAGETYPE_JP2: 
            case 
IMAGETYPE_JPX: 
            case 
IMAGETYPE_JB2: 
            case 
IMAGETYPE_SWC: 
            case 
IMAGETYPE_IFF: 
                return -
12; 
                break; 
            case 
IMAGETYPE_WBMP: 
                
imagewbmp($imgDestino); 
                break; 
            case 
IMAGETYPE_XBM: 
                
imagexbm($imgDestino); 
                break; 
            default: 
                return -
13; 
                break; 
        } 

        
imagedestroy($imgOrigen); 
        
imagedestroy($imgDestino); 

        return 
1; 

    } 

    function 
ErrorPintaImagenRedimensionada($iRetorno){ 

        
$sTexto1 = ""; 
        
$sTexto2 = ""; 

        switch(
$iRetorno){ 
            case -
8: 
                
$sTexto1 = "La dirección de la imagen dada no es válida"; 
                break; 
            case -
10: 
                
$sTexto1 = "No se ha encontrado el tipo mime de la imagen"; 
                
$sTexto2 = "ni en sus cabeceras ni pasadas por parámetro"; 
                break; 
            case -
11: 
                
$sTexto1 = "El tipo de la imagen dado no se puede redimensionar"; 
                
$sTexto2 = "Se recomiendan los tipos jpg, gif ó png"; 
                break; 
            case -
12: 
                
$sTexto1 = "No es posible crear una imagen con el tipo dado"; 
                
$sTexto2 = "Se recomiendan los tipos jpg, gif ó png"; 
                break; 
            case -
13: 
                
$sTexto1 = "El tipo mime no esta implementado"; 
                
$sTexto2 = "Se recomiendan los tipos jpg, gif ó png"; 
                break; 
            case -
20: 
                
$sTexto1 = "Error en los parámetros pasados ancho (3º) ó alto(4º)"; 
                
$sTexto2 = "Los valores deben ser numéricos enteros o decimales"; 
                break; 
            case -
21: 
                
$sTexto1 = "Error en los parámetros pasados ancho (3º) y alto(4º)"; 
                
$sTexto2 = "al menos uno de estos parámetros deben de ser positivos"; 
                break; 
            default: 
                if (
$iRetorno < 0) $sTexto1 = "Error desconocido"; 
                break; 
        } 

        if (
$sTexto1 != ""){ 
            
$imagen = imagecreate (400, 40); 
            
$cFondo = imagecolorallocate ($imagen, 255, 226, 169); 
            
$cTexto = imagecolorallocate ($imagen, 153, 102, 0); 
            
imagefilledrectangle ($imagen, 0, 0, 150, 30, $cFondo); 
            if (
$sTexto2 == ""){ 
                
imagestring ($imagen, 3, 5, 15, $sTexto1, $cTexto); 
            }else{ 
                
imagestring ($imagen, 3, 5, 5, $sTexto1, $cTexto); 
                
imagestring ($imagen, 3, 5, 20, $sTexto2, $cTexto); 
            } 

            
header("Content-type: image/png"); 
            
imagepng($imagen); 
            
imagedestroy($imagen); 
        } 

    } 

     
    
$iError = iPintaImagenRedimensionada("imagen.jpg", TRUE, 0.5, -1, IMAGETYPE_JPEG);