Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/04/2011, 13:36
Avatar de softmaster
softmaster
 
Fecha de Ingreso: diciembre-2008
Mensajes: 230
Antigüedad: 15 años, 4 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$imgOrigen0000$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 (40040); 
            
$cFondo imagecolorallocate ($imagen255226169); 
            
$cTexto imagecolorallocate ($imagen1531020); 
            
imagefilledrectangle ($imagen0015030$cFondo); 
            if (
$sTexto2 == ""){ 
                
imagestring ($imagen3515$sTexto1$cTexto); 
            }else{ 
                
imagestring ($imagen355$sTexto1$cTexto); 
                
imagestring ($imagen3520$sTexto2$cTexto); 
            } 

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

    } 

     
    
$iError iPintaImagenRedimensionada("imagen.jpg"TRUE0.5, -1IMAGETYPE_JPEG);