Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/01/2011, 10:29
Avatar de julliop
julliop
 
Fecha de Ingreso: septiembre-2006
Ubicación: Asturias, patria querida
Mensajes: 42
Antigüedad: 17 años, 7 meses
Puntos: 0
problema con el uso imagejpeg

Estoy haciendo un script en el que subo una foto y la renombro al numero siguiente a las que hay en el directorio.
Después miro su tamaño e intento redimensionar(al mismo tamaño para poder comprimirla).
Aquí me surge el problema, solo me funciona con imagenes de tamaño y/o peso limitado, es decir, con imagenes de 1500x1000 y 400kb y me funciona, pero si intento subir las que me saca la camara, 3000 x 2000(aprox) y pesan 2 mb, no me funciona, adjunto el codigo y comento cual es la sentencia exacta donde para de funcionar.
Código PHP:
Ver original
  1. <?php
  2. if (isset($_POST['submit']))
  3. {
  4.    
  5.     $ruta= "fotos/".$_FILES['fichero']['name']; // Se guardaría dentro de "fotos"
  6.                
  7.     if(is_uploaded_file($_FILES['fichero']['tmp_name']))  // verifica haya sido cargado el archivo
  8.     {
  9.         if($_FILES['fichero']['type']=="image/jpeg")  //solo permite la subida de archivos .jpg
  10.         {
  11.             if(move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta)) // se coloca en su lugar final
  12.             {
  13.                 $dir = "fotos/";
  14.                 $a=0;
  15.                 if (is_dir($dir))
  16.                 {
  17.                     if ($gd = opendir($dir))
  18.                     {
  19.                         while (($archivo = readdir($gd)) !== false)
  20.                         {
  21.                             $a++; // sumo 1 al contador si hay archivo o carpeta
  22.                         }
  23.                         closedir($gd);
  24.                     }
  25.                 }
  26.                 $num=$a-3;
  27.        
  28.                 rename("fotos/".$_FILES['fichero']['name'],"fotos/".$num.".jpg"); //remonbro el archivo que nos subi
  29.                
  30.                 //echo "<b>Upload exitoso!. Datos:</b><br>";
  31.                 //echo "Nombre: <i><a href=\"".$_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>";
  32.                 //echo "Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>";
  33.                 //echo "Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>";
  34.                 //echo "<br><hr><br>";
  35.             }
  36.         }else echo "Solo se permiten subir archivos jpg";
  37.     }else echo"Ha surgido un problema al subir la foto, intentelo mas tarde";
  38.        
  39.     //VAMOS COMPROBAR TAMAÑO, HACERLA PEQ, MEDIANA, COMPRIMIRLA...
  40.     echo $num."<br>";
  41.     list($ancho, $alto) = getimagesize("fotos/".$num.".jpg"); //devuelve el tamaño de la imagen
  42.     echo "Ancho: ".$ancho." Alto: ".$alto;
  43.    
  44.     $nombre_archivo = 'fotos/'.$num.'.jpg';
  45.  
  46.     header('Content-type: image/jpeg');
  47.    
  48.     $imagen_p = imagecreatetruecolor($ancho, $alto);
  49.    
  50.     $imagen = imagecreatefromjpeg($nombre_archivo);   //ESTA SENTENCIA NO FUNCIONA!!!!
  51.    
  52.     echo "guardar";
  53.  
  54.     imagecopyresampled($imagen_p, $imagen, 0, 0, 0, 0, $ancho, $alto, $ancho, $alto);
  55.  
  56.     //guardar
  57.     imagejpeg($imagen_p, "julio.jpg", 75);
  58.    
  59.    
  60.      if($ancho>$alto) //entonces anchoNuevo = 800 y altoNuevo= (alto/ancho)x800
  61.     {
  62.        
  63.     }
  64.     else //entonces altoNuevo=800 y anchoNuevo= (ancho/alto)x800
  65.     {
  66.        
  67.     }  
  68.    
  69. }
  70. ?>
  71.  
  72. <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
  73.     Archivo: <input name="fichero" type="file">
  74.     <input name="submit" type="submit" value="Upload!">
  75. </form>

Mencionar que parte del codigo es copiado de otros hilos y/o de php.net

P.D. las imagenes que sean muy grandes también tengo pensado redimensionarla para que pesen menos.

P.D2: ¿si quiero mostrar imagenes en miniatura además de las imagenes grandes, me recomendais guardarlas en miniatura, o mostrarlas en tamaño pequeño modificandolo desde html?

Saludos y muchas gracias de antemano