Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/06/2004, 20:45
germanst
 
Fecha de Ingreso: agosto-2003
Mensajes: 57
Antigüedad: 20 años, 8 meses
Puntos: 0
Ayuda urgente con codigo para cambiar tamaño de imagen

Hola, necesito resolver urgente esto, espero que me puedan ayudar.
Yo tengo un formulario para llenar datos y se puede subir una imagen que tiene que ser guardada en la base de datos. Con esto no tengo problema, ya que hice lo siguiente y funciona bien:


Código PHP:
$nombre $_FILES[archivo][tmp_name];
if (
$nombre != "")
    {
    
$tamanio=filesize($nombre);
    
$fp=fopen($nombre,"r");
    
$imagen=fread($fp,$tamanio);
    
$imagen=addslashes($imagen);
    }
// despues guardo $imagen en la base de datos 

Ahora, yo antes de guardar la imagen necesito cambiarle el tamaño para guardar todas la imagenes que sean subidas con el mismo tamaño.
Me dijeron que lo podia hacer con el siguiente codigo:


Código PHP:
function resizeImg($s_img$d_img$w_max$h_max)
    {
        
// Guarda los posibles tipos de imagenes en un array ($img_types)
        
static $img_types = array(
            
=> 'Gif'
            
=> 'Jpeg'
            
=> 'Png' 
        
); 
         
        if (
file_exists($s_img))
        {
            
// Obtiene el tipo del fichero 
            
list(,,$type) = getImageSize($s_img);
             
            
// No se reconoce el tipo del fichero 
            
if (!isset($img_types[$type])) { 
                
trigger_error('No se reconoce el tipo de imagen'E_USER_WARNING); 
                return 
false
            } 
             
            
// Se define función que creará la imagen y se comprueba que exista 
            
if (!function_exists($f_create 'imageCreateFrom' $img_types[$type])) {
                
trigger_error("No existe la función '{$f_create}' necesaria para abrir la imagen."E_USER_WARNING); 
                return 
false
            } 
             
            
// Crea la imagen a partir del fichero y comprueba que se haya cargado bien 
            
if (!$img $f_create($s_img)) { 
                
trigger_error("No se pudo abrir el fichero correctamente."E_USER_WARNING); 
                return 
false
            } 

            
// Obtiene el tamaño de la imagen original 
            
list($aw$ah) = array(imageSX($img), imageSY($img)); 
             
            
// Si el ancho o el alto de la imagen es menor o igual a 0 
            
if ($aw <= || $ah <= 0) { 
                
trigger_error("El tamaño de la imagen es incorrecto."E_USER_WARNING); 
                return 
false
            } 
             
            
// Se calcula la proporción de la imagen 
            
if ($aw $ah) { 
                
$nw $w_max
                
$nh = ($nw $aw) * $ah
            } else { 
                
$nh $h_max
                
$nw = ($nh $ah) * $aw
            } 

            
// Si se puede crear la imagen a color verdadero se crea 
            
if (function_exists('imageCreateTrueColor')) { 
                
$img2 imageCreateTrueColor($nw$nh); 
            } else { 
                if (
function_exists('imageCreate')) { 
                    
trigger_error("No existe la función 'imageCreate', no se puede crear la imagen."E_USER_WARNING); 
                    return 
false
                } 
                 
                
$img2 imageCreate($nw$nh); 
            } 
             
            if (!
$img2) { 
                
trigger_error("No se pudo crear la imagen correctamente."E_USER_WARNING); 
                return 
false
            } 

            
// Se intenta usar imageCopyResampled 
            
if (function_exists('imageCopyResampled')) { 
                
imageCopyResampled($img2$img0000$nw$nh$aw$ah); 
            } else { 
                if (
function_exists('imageCopyResized')) { 
                    
trigger_error("No existe la función 'imageCopyResized', no se puede redimensionar la imagen."E_USER_WARNING); 
                    return 
false
                } 
                 
                
imageCopyResized($img2$img0000$nw$nh$aw$ah); 
            } 

            
// Se comprueba que exista la función para guardar la imagen, en caso 
            // contrario se prueban otros formatos. 
            
foreach(array($img_types[$type], 'Jpeg''Png') as $type_t) { 
                if (
function_exists($f_save 'image' $type_t)) { 
                    
// Se guarda la imagen 
                    
if ($f_save($img2$d_img)) return true;                     
                }                 
            } 
             
            
trigger_error("No se pudo guardar la imagen en '{$d_img}'."E_USER_WARNING); 
            return 
false
        } 

        
trigger_error("No existe el fichero '{$s_img}'."E_USER_WARNING);
        return 
false
    } 

El problema es que no se como ni cuando llamar esta funcion, ya que probe llamandola despues del addslashes($imagen), y le mando $imagen y me dice que no existe el fichero..., probé mandandole $imagen pero sin hacerle el addslashes, pero tampoco funcionaba. Quisiera ver si alguien me puede decir en que momento llamar a la funcion, que variable le paso, y si a la imagen que me devuelve le tengo que hacer algo para guardarla en la base de datos o simplemente la gurdo como me la devuelve.
Bueno, agradezco si alguien se tomo el tiempo de leer todo esto. Muchas Gracias!

Germán.