Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/02/2009, 15:57
Avatar de SCY-FOX
SCY-FOX
 
Fecha de Ingreso: septiembre-2007
Ubicación: Chile
Mensajes: 139
Antigüedad: 12 años, 4 meses
Puntos: 5
De acuerdo Respuesta: Redimensionar fotos en tmp o después?

¡SOLUCIONADO!

Código PHP:
    if (isset($_GET['id_cat']))
    {
        
$id_cat    =    $_GET['id_cat'];    
    }

    
$datos_categoria mostrar_categoria_id($id_cat);/Consulta SQL en otro fichero
    $resultado 
mysql_query($datos_categoria);
    
    if (
$valor mysql_fetch_array($resultado))
    {
        
$id_cat                    =    $valor[0];
        
$titulo_cat            $valor[1];
        
$detalle_cat        =    $valor[2];
        
$path_thumb_cat    =    $valor[4];
        
$orden_cat            =    $valor[5];
    }
    
    
$datos_fotos    =    mostrar_fotosporcat($valor[0]);//Consulta SQL en otro fichero
    
$resfotos            =    mysql_query($datos_fotos);
        
    if (isset(
$_POST['add_foto']))
    {
        
//Inicializar variables
        
$id_cat "";
        
$n_foto1    =    "";
            
        
$id_cat    =    $_POST['id_cat'];
        
    
//Recibo Ficheros - Foto Thumb

    
$n_foto1            =    $_FILES['foto1']['name'];
    
$n_foto1_tmp    =    $_FILES['foto1']['tmp_name'];
    
$n_foto1_size    =    $_FILES['foto1']['size'];
    
$n_foto1_type    =    $_FILES['foto1']['type'];
    
    
//DEBUG VARIABLES Y FUNCIONAMIENTO GENERAL
    /*
    echo $id_cat."<br />";
        
    echo $n_foto1."<br />";
    echo $n_foto1_tmp."<br />";
    echo $n_foto1_size."<br />";
    echo $n_foto1_type."<br />";*/
    
    //Si el alto máximo es superado, se detiene la carga y welta patrá! xDD
    
list($ancho_original$alto_original$tipo_original$alternativo) = getimagesize($n_foto1_tmp);
    
    if (
$alto_original 393)
     {
         echo 
"<script>alert('El alto maximo es 393px. La imagen va a ser redimensionada.');</script>";
    
    
    
/********************************************************/
    
    /*  PRIMERAS PRUEBAS DE REDIMENSIONAMIENTO   */
    
    /*echo "Ancho Original: " .$ancho_original."<br />";
    echo "Alto Original: "  .$alto_original."<br />";
    echo "Tipo de Foto: " .$tipo_original."<br />";
    */
    //ALTO MAXIMO
    
$alto_final    =    369;

    
//DIRECTORIO DONDE CAERAN LAS IMAGENES REDIMENSIONADAS
    //$directorio = 'images/grandes';
    
    //SI IMAGEN CARGADA ES GIF    
    
if($n_foto1_type    ==    "image/gif"){$img    =    imagecreatefromgif($n_foto1_tmp);}
    
    
//SI IMAGEN CARGADA ES JPG/JPEG/PJPEG
    
if ($n_foto1_type == "image/jpeg" || $n_foto1_type == "image/pjpeg"){ $img    =    imagecreatefromjpeg($n_foto1_tmp);}
    
    
//SI IMAGEN CARGADA ES PNG
    
if($n_foto1_type    ==    "image/png"){$img    =    imagecreatefrompng($n_foto1_tmp);}
    
    
//CALCULO DE RANGOS PARA HACER REDIMENSIONADO SIN AFECTAR LA PROPORCION
    
    
echo $img;
    
    if (
$alto_original $alto_final)
    {
        
$ancho_final "";
        
$ancho_final    =    $ancho_original $alto_final/$alto_original;
    }
    
    echo 
$ancho_final."<br />";
    echo 
$alto_final."<br />";
    
//die();
    
    //CREACIÓN DE NUEVO LIENZO DONDE SE SE PEGARÁ EL CACHE DE CREACIÓN DE IMAGECREATEFROM-TYPE
    
$thumb imagecreatetruecolor($ancho_final,$alto_final);
    
    
//PEGA EL CACHE DE CREACIÓN AL LIENZO RECIÉN CREADO.
    //LIENZO, CACHE, X LIENZO, Y LIENZO, X CACHE, Y CACHE, ANCHO FINAL,ALTO FINAL, ANCHO ORIGINAL, ALTO ORIGINAL.
    
imagecopyresampled($thumb$img0000$ancho_final$alto_final$ancho_original$alto_original);
    
    if (
$n_foto1_type    ==    "image/gif")
        {
            
imagegif($thumb$n_foto1_tmp);
        }

    if (
$_FILES['foto1']['type'] == "image/jpeg" || $_FILES['foto1']['type'] == "image/pjpeg")
        {    
            
imagejpeg($thumb$n_foto1_tmp100);
        }
    
    if (
$n_foto1_type    ==    "image/png")
        {
            
imagepng($thumb$n_foto1_tmp);
        }
 }

     
if (
$n_foto1 == ''//SIN FOTO
    

        
$n_foto1         ""
        
$sin_foto1         "TRUE"
         echo 
"<script>alert('No ha seleccionado ninguna imagen o el formato de imagen es incorrecto.');</script>";
        echo 
"<script type=\"text/javascript\">window.location = 'javascript:history.go(-1)';</script>";
        die();
                        
    } else if (
$n_foto1 != '')// CON FOTO
            

            
$n_foto1         renombrar($n_foto1);    
            
$sin_foto1         "FALSE";
            }
            
//Funciones de Carga al Servidor
$upload_dir    "http://www.forosdelweb.com/images/grandes/";

//Mover direccion temporal de FOTO 1 a DIRECCION FINAL en images/noticias/chicas
if ($sin_foto1 != "TRUE")
{
    
$n_path_foto1        =    $upload_dir $n_foto1;    
    
$resultado1        =    move_uploaded_file($n_foto1_tmp$n_path_foto1);

    if (!
$resultado1)
        {
            echo 
'Error, La consulta falló luego de subir archivo : '.mysql_error();
            exit;
            die();
        }
}

//***********************************************************
//Aca deben incluirse los datos de ingreso a la base de datos.
//***********************************************************

    
if (!get_magic_quotes_gpc())
    {    
        
$n_foto1        =    addslashes($n_foto1);
        
        
$n_path_foto1        =    addslashes($n_path_foto1);
    }
    
    
$sql="INSERT INTO tabla (id_cat, nom_foto, path_foto, orden_foto)
                                            VALUES ('"
.$id_cat."',
                                                            '"
.$n_foto1."',
                                                            '"
.$n_path_foto1."', '1')";
    

    
//echo $sql;
    
$resultado_add mysql_query($sql);
    
    if (!
$resultado_add)
    {
        echo 
'Error, La consulta falló tratando de ingresar a bd : '.mysql_error();
    }
     else {
             echo 
"<script>alert('Imagen agregada correctamente.');</script>";
             
//echo "<script>window.location = 'admin.php?op=catfotos_add&id_cat=".$id_cat."'; </script>";
                 
}


La solucion al error o warning:
Código:
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in...
Por alguna razón, no me tomaba el valor del tipo de imagen al hacer este comando:

Código PHP:
list($ancho_original$alto_original$tipo_original$alternativo) = getimagesize($n_foto1_tmp); 
Los valores de tipo_original salen como 1,2,3. Mientras que $_FILES['foto']['type']; te responde con image/gif, image/jpeg o image/pjpeg, y image/png

Con estos ultimos valores es posible que la wea funcione.

Valida que subas o no imagenes, para formularios donde la imagen sea opcional. El alto máximo se puede cambiar, y como comente casi todas las lineas de código, puede cambiarse para redimensionar segun el ancho en vez de por el alto.

Muchas gracias por todos los tips.!!

Silla!