Foros del Web » Programando para Internet » PHP »

move upload con image gd

Estas en el tema de move upload con image gd en el foro de PHP en Foros del Web. Hola a todos. Necesito un poco de ayuda para colocar una imagen cambiado el tamaño y otra en tamaño real. La imagen real me la ...
  #1 (permalink)  
Antiguo 20/09/2010, 18:12
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 14 años, 9 meses
Puntos: 5
move upload con image gd

Hola a todos. Necesito un poco de ayuda para colocar una imagen cambiado el tamaño y otra en tamaño real.
La imagen real me la sube bien, pero lo que no se es como colocar la imagen redimensionada.

Esto es lo que tengo
Código PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
    
          
             
$rnd rand(1,10000);
             
$name $rnd."_".$_FILES["archivos"]["name"];
               
$tmp_name $_FILES["archivos"]["tmp_name"]; 
              
$tamano $_FILES["archivos"]["size"];
              
$tipo $_FILES["archivos"]["type"];       
            
            
            
// reducir tamano
            
            
$file $name;//Nombre de la imagen Original
 
 
function image_gd($file)
{
//Separamos las extenciones de archivos para definir el tipo de ext.
    
$extension explode(".",$file);
    
$ext count($extension)-1;
    
//Determinamos las extenciones permitidas.
        
if($extension[$ext] == "jpg" || $extension[$ext] == "jpeg")
        {
            
$image ImageCreateFromJPEG($file);
        }
        else if(
$extension[$ext] == "gif"){
            
$image ImageCreateFromGIF($file);
        }
        else if(
$extension[$ext] == "png"){
            
$image ImageCreateFromPNG($file);
        }
        else
        {
            echo 
"Error, extencion no permitida";
            die();
        }
 
    
$thumb_name substr($file,0,-5);//nombre del thumbnail
    
$width  imagesx($image);//ancho
    
$height imagesy($image);//alto
 
    
$nueva_anchura  100// Definimos el tamaño a 100 px
    
$nueva_altura = ($nueva_anchura $height) / $width // tamaño proporcional
 
        
if (function_exists("imagecreatetruecolor"))
        {
           
$thumb ImageCreateTrueColor($nueva_anchura$nueva_altura);//Color Real
        
}
        
//En caso de no encontrar la funcion, la saca en calidad media
        
if (!$thumb$thumb ImageCreate($nueva_anchura$nueva_altura);
 
    
ImageCopyResized($thumb$image0000$nueva_anchura$nueva_altura$width$height);
    
header("Content-type: image/jpeg");
    
ImageJPEG($thumb"t_".$thumb_name.".jpg"100);
    
imagedestroy($image);
 
return 
$image;
}
image_gd($file);
// fin de reducir el tamano
            
           
$cate=$_POST['categoria'];

  
$insertSQL sprintf("INSERT INTO $cate (espanol, ingles, sueco, posicion, peque, imagen) VALUES (%s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['espanol'], "text"),
                       
GetSQLValueString($_POST['ingles'], "text"),
                       
GetSQLValueString($_POST['sueco'], "text"),
                       
GetSQLValueString($_POST['posicion'], "int"),
                       
GetSQLValueString("peques/".$thumb"text"),
                       
GetSQLValueString("platos/".$name"text"));

            
//$copy = copy($tmp_name, "platos/".$name);
            
move_uploaded_file($tmp_name"platos/".$file);

         
            
  
mysql_select_db($database_rmaritimo$rmaritimo);
  
$Result1 mysql_query($insertSQL$rmaritimo) or die(mysql_error());

  
$insertGoTo "carta.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo));

Alguien que me pueda echar una mano?
Muchas gracias
  #2 (permalink)  
Antiguo 25/09/2010, 05:05
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 12 años, 2 meses
Puntos: 331
Respuesta: move upload con image gd

Hola Visona, la función que redimensiona devuelve $image, pero justo antes llama a imagedestroy(). Parece que la variable que devuelves ya no existe.
Por otra parte, el return de esta función no es utilizado nunca. Una vez guardada la imagen redimesionada deberías devolver la ruta a esa imagen.

Creo que los pasos serían:
1. Abrir imagen original
2. Redimensionar y guardar en directorio
3. Guardar la ruta en donde has guardado la imagen
4. Hacer el insert en la DB con esa ruta.

Por otra parte, utilizar la función rand() para el nombre de la imagen no es buena idea, puedes tener la mala suerte de que se repita el nombre y el rand.
Mejor utiliza un timestamp+nombre de imagen, así te aseguras un nombre único.

Espero haberte guiado un poco, 1 saludo

Etiquetas: image, move, upload
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:34.