Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/05/2005, 07:56
Avatar de fermar21
fermar21
 
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años, 7 meses
Puntos: 0
Exclamación Problemas creando thumbs con GD

Hola gente,

Este es el script con problemas:

Código PHP:
<?
set_time_limit
(0); //Tiempo de ejecucion ilimitado
$dir=$_GET["dir"];
if (
$dir!="")
    {
      
$directorio dir("$dir");
      while(
$fichero=$directorio->read()) 
          {
          if (
$fichero!="." && $fichero!=".." && $fichero!="thumbs" && $fichero!="agua")
      {
      
$archivo explode("."$fichero);
      
$origen_nombre=$archivo['0'];
      
$origen=$dir.$fichero;
      
$destino=$dir.$origen_nombre."b.jpg";
      
$destino_temporal=tempnam("/tmp","tmp");
      
redimensionar_jpeg($origen$destino_temporal640480100);
      
      
// guardamos la imagen
      
$fp=fopen($destino,"w");
      
fputs($fp,fread(fopen($destino_temporal,"r"),filesize($destino_temporal)));
      
fclose($fp);

      
// mostramos la imagen
      
chmod($destino,777);
      echo 
"<img src='$destino' border=\"0\">&nbsp;&nbsp;";
      }
          }
      
$directorio->close();
    }
    else
    { 
?>
    <FORM action="crear_thumbs.php" method="GET">
           Nomnbre del directorio: <INPUT type="text" name="dir" value="fotos/" size="40">  <INPUT type="submit" value="Enviar">
        </FORM>
    <?php }
    

function 
redimensionar_jpeg($img_original$img_nueva$img_nueva_anchura$img_nueva_altura$img_nueva_calidad)
      { 
    
// crear una imagen desde el original 
    
$img ImageCreateFromJPEG($img_original); 
    
// crear una imagen nueva 
    
$thumb imagecreatetruecolor($img_nueva_anchura,$img_nueva_altura); 
    
// redimensiona la imagen original copiandola en la imagen 
    
ImageCopyResized($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura,ImageSX($img),ImageSY($img)); 
     
// guardar la nueva imagen redimensionada donde indicia $img_nueva 
    
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
    
ImageDestroy($img);
      }
 
?>
Este script lo que hace es guardar una copia de la foto original pero en 640x480 y con una b al final. Pj: Si el original es foto.jpg, la copia es fotob.jpg
El problema surge cuando hay muchas fotos en la carpeta donde estan las fotos (si hay pocas fotos funciona barbaro), me toma como foto original a las copias y me empieza a crear archivos fotobb.jpg, fotobbb.jpg, etc.... y esto me cuelga el server ya que se forma un bucle muuuuuy largo.
Hay alguna forma de evitar eso con alguna funcion o algo?

Saludos y espero sus respuestas,
Gracias
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)