<?
//------------------------------------------ Funciones ---------------------------------------------------------------
function CrearImagenes($Foto,$crearNueva,$resolucion,$anchoLimite=false,$altoLimite=false){
/*
    Rutina:            CrearImagenes
    Objetivo:        Editar el tamaño de las imágenes. Lo devuelve en la misma foto ó en una nueva
    Descripcion:    La imágen se pasa como el nombre de un archivo: $Nivel/$DB/$EE/$EEE/$Foto
                    Se edita y en base a los parametros dados devuelve el nombre de la imagen nueva
                    o vacío (edito la imagen original)
    Param Recib:    Foto: Nombre del archivo en el directorio pasado por las variables globales
                    crearNueva: true o false, indica si se edita la original, o se crea una nueva
                    anchoLimite: Ancho máximo de la imágen
                    altoLimite: Alto límite de la foto
    Variables globales: se debe tener un valor en $TOimg
    Devuelve:        El HTML necesario
*/
    
global $BD,$EE,$EEE,$Nivel,$TOimg;
    
    if (
$TOimg == "") die("Error: Directorio TOimg no especificado");
    
    
//Dividir el nombre y la extension del archivo
    
$Extension explode(".",$Foto);
    
$extImg strtoupper($Extension[count($Extension)-1]);

    
//Creamos una imagen a partir de la variable $FOTO
    
switch($extImg){
        case 
"JPG":
        case 
"JPEG":
            
$IDImagenOriginal imagecreatefromjpeg($Nivel.$Foto)or die("No se logró crear la imagen JPG/JPEG: $Nivel $Foto");
        break;
        case 
"GIF":
            
$IDImagenOriginal imagecreatefromgif($Nivel.$Foto)or die("No se logró crear la imagen GIF: $Nivel $Foto");
        break;
        case 
"PNG":
            
$IDImagenOriginal imagecreatefrompng($Nivel.$Foto)or die("No se logró crear la imagen PNG: $Nivel $Foto");
        break;
    }
    
    
//Obtenemos el ancho y alto de la imagen original
    
$AnchoImagenOriginal imagesx($IDImagenOriginal);
    
$AltoImagenOriginal imagesY($IDImagenOriginal);
    
    
//Asumimos que no hay cambios en el reescalamiento
    
$AnchoNuevo $AnchoImagenOriginal;
    
$AltoNuevo $AltoImagenOriginal;
    
    
//Calculamos los anchos y altos dependiendo si se definieron o no cuando se llamó a la función
    
if($anchoLimite != && $anchoLimite != '' && $anchoLimite != ' ' && $anchoLimite != null && $anchoLimite != false){
        
$AnchoNuevo $anchoLimite;
        if(
$altoLimite != && $altoLimite != '' && $altoLimite != ' ' && $altoLimite != null && $altoLimite != false){
            
$AltoNuevo $altoLimite;
        }
        else{
            
$AltoNuevo = ($anchoLimite*$AltoImagenOriginal)/$AnchoImagenOriginal;
        }
    }
    
    if(
$altoLimite != && $altoLimite != '' && $altoLimite != ' ' && $altoLimite != null && $altoLimite != false){
        
$AltoNuevo $altoLimite;
        if(
$anchoLimite != && $anchoLimite != '' && $anchoLimite != ' ' && $anchoLimite != null && $anchoLimite != false){
            
$AnchoNuevo $anchoLimite;
        }
        else{
            
$AnchoNuevo =($altoLimite*$AnchoImagenOriginal)/$AltoImagenOriginal;
        }
    }
    
    
//Creamos el lienzo de la imagen con las nuevas dimensiones
    
switch($extImg){
        case 
"JPG":
        case 
"JPEG":
            
$IDImagenNueva imagecreatetruecolor ($AnchoNuevo$AltoNuevo);
        break;
        case 
"GIF":
        case 
"PNG":
            if(
$extImg == "PNG"){
                
$IDImagenNueva imagecreatetruecolor ($AnchoNuevo$AltoNuevo);
            }
            else{
                
//La representación para gif no es buena con imagecreatetruecolor por eso se hace con imagecreate
                
$IDImagenNueva imagecreate ($AnchoNuevo$AltoNuevo);
            }
            
            
$trnprt_indx imagecolortransparent($IDImagenOriginal);
            
//Verificamos si tenemos un color transparente específico
            
if ($trnprt_indx >= 0) {
                
//Obtenemos el color transparente de la imagen original
                
$trnprt_color    imagecolorsforindex($IDImagenOriginal$trnprt_indx);
                
//Colocamos el mismo color en la fuente de la imagen
                
$trnprt_indx    imagecolorallocate($IDImagenNueva$trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
                
//Rellenamos la fuente de la imagen con el nuevo color que colocamos
                
imagefill($IDImagenNueva00$trnprt_indx);
                
//Colocamos como color de fondo para la imagen nueva el color transparente
                
imagecolortransparent($IDImagenNueva$trnprt_indx);
            } 
            
//Creamos un color transparente para los PNG en caso que no tenga ya uno
            
elseif ($extImg == "PNG") {
                
//Desactivamos el renderizado de transparencia temporalmente
                
imagealphablending($IDImagenNuevafalse);
                
//Creamos un nuevo color transparente para la imagen
                
$color imagecolorallocatealpha($IDImagenNueva000127);
                
//Rellenamos completamente el fondo con el nuevo color que colocamos
                
imagefill($IDImagenNueva00$color);
                
//Activamos el renderizado de transparencia
                
imagesavealpha($IDImagenNuevatrue);
            }
        break;
    }
    
    
//Redimensionamos la imagen en el nuevo lienzo
    
imagecopyresampled  ($IDImagenNueva$IDImagenOriginal0000$AnchoNuevo$AltoNuevo$AnchoImagenOriginal$AltoImagenOriginal) or die("No se logró copiar la imagen");
    
    if(
$crearNueva){
        
//Se pidió generar una foto nueva (no reemplazar la original)
        
$NombreImagenNueva GenerarNombre($Fotostrtolower($extImg));
        
$Foto "$Nivel../$TOimg/$NombreImagenNueva";
    }else{
        
//Se devuelve en blanco ya que no hay imagen nueva
        
$NombreImagenNueva="";
    };
    
    
//Creamos el archivo físico de la imagen redimensionada
    
switch($extImg){
        case 
"JPG":
        case 
"JPEG":
            
imagejpeg($IDImagenNueva,$Foto,$resolucion)    or die("No se logró pegar la imagen .jpg/jpeg");
        break;
        case 
"GIF":
            
imagegif($IDImagenNueva,$Foto)    or die("No se logró pegar la imagen .gif");
        break;
        case 
"PNG":
            
imagepng($IDImagenNueva,$Foto)    or die("No se logró pegar la imagen .png");
        break;
    }
    
    return 
$NombreImagenNueva;
};

function 
GenerarNombre($NombreOriginal$extension){
    
$fecha date("Ymd");
    
$NumAleatorio rand(111111,999999);
    
//Nombre con que se va a ingresar la imagen al sistema, consiste primero en la fecha actual seguido de un 
    //guion (-), el tiempo en formato UNIX , y por último la extensión del archivo original.
    
$NombreArchivo "$fecha-$NumAleatorio.".$extension;
    return 
$NombreArchivo;
};
?>