Tema: Error en php
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/09/2008, 09:15
elrufoelrufo
 
Fecha de Ingreso: septiembre-2008
Mensajes: 8
Antigüedad: 15 años, 8 meses
Puntos: 0
Error en php

Hola Buenas, tengo el siguiente código en php que mostraré a continuación en el cula se sube una imagen y se redimensiona para mostrarla como imagen y como miniatura. Lo que me ocurre es que con algunas imagenes funciona y con otras me dá el siguiente error ( "imagejpeg(): supplied argument is not a valid Image resource"), esto casualmente sólo me ha ocurrido cuando intento subir imágenes de mas de 2 megas.

Pongo el código completo de la aplicación :

Código PHP:
<?php  

function CargarJpeg ($nombreimg) {
    
$im = @imagecreatefromjpeg ($nombreimg); /* Intento de apertura */
    
if (!$im) { /* Comprobar si ha fallado */
        
        
$im  imagecreate (15030); /* Crear una imagen en blanco */
        
$bgc imagecolorallocate ($im255255255);
        
$tc  imagecolorallocate ($im000);
        
imagefilledrectangle ($im0015030$bgc);
        
/* Mostrar un mensaje de error */
        
imagestring ($im203040"Error cargando $nombreimg"$tc);
        
imagedestroy($im);
    }
    return 
$im;
}
function 
RedimensionaImagen ($nombreimgdest $original$hmax$anchura) {
    
 
    
$datos[0] = imagesx($original);
    
$datos[1]= imagesy($original);     
  
$ratio = ($datos[0] / $anchura); 
  
$altura = ($datos[1] / $ratio); 
  if(
$altura>$hmax){$anchura2=$hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;}
   
  
$thumb imagecreatetruecolor($anchura,$altura); 
  
imagecopyresampled($thumb$original0000$anchura$altura$datos[0], $datos[1]); 
  
header'Content-Type: image/jpeg' );
 
  if(!
imagejpeg($thumb,$nombreimgdest,75)){
    if(
$thumb)
    
imagedestroy($thumb);
    return 
false;
  }
  else{
  if(
$thumb
  
imagedestroy($thumb);
  return 
true;
  }
  

}

  
session_start();
    
//    Script Que copia el archivo temporal subido al servidor en un directorio.
    
    
$k=explode(".",$HTTP_POST_FILES['fileUpload']['name']);
    
$tamanio=count($k);
    
  
//    Definimos Directorio donde se guarda el archivo
    
$dir './fotos/';
    
$dir2=$SESSION["login"];
        
    
$dir$dir.$dir2.'/';
    
mkdir($dir0777);

  
  
//    Intentamos Subir Archivo
    //    (1) Comprovamos que existe el nombre temporal del archivo
    
if (isset($HTTP_POST_FILES['fileUpload']['tmp_name'])) {
        
//    (2) - Comprovamos que se trata de un archivo de imágen
        
if(strcasecmp($k[$tamanio-1],'JPG')==|| strcasecmp($k[$tamanio-1],'JPEG')==0) {
            
//    (3) Por ultimo se intenta copiar el archivo al servidor.
            
$aux=CargarJpeg($HTTP_POST_FILES['fileUpload']['tmp_name']);
                           
                
$destimagen=$dir.$HTTP_POST_FILES['fileUpload']['name'];
            if (!
RedimensionaImagen($destimagen ,$aux ,600 ,440)){
                
$errorserror_get_last();
                echo 
'<script>parent.resultadoUpload (\'3\', \''.$HTTP_POST_FILES['fileUpload']['name'].'\',\''.$errors['message'].'\');</script>';
            }
            else {
                 
$dirmin='./miniaturas/';
        
$dirmin=$dirmin.$dir2.'/';
        
mkdir($dirmin);
        
        
$original=CargarJpeg($dir.$HTTP_POST_FILES['fileUpload']['name']);
        
               
            
RedimensionaImagen($dirmin.$HTTP_POST_FILES['fileUpload']['name'], $original,180 ,150);
        
imagedestroy($aux);
        
imagedestroy($original);
                                    
                 
        echo 
'<script>parent.resultadoUpload (\'0\', \''.$HTTP_POST_FILES['fileUpload']['name'].'\',\''.$dir2.'\');</script>';
            }
          
        }
        echo 
'<script>parent.resultadoUpload (\'2\', \''.$HTTP_POST_FILES['fileUpload']['name'].'\',\''.$k[1].'\');</script>';
    }
    echo 
'<script>parent.resultadoUpload (\'1\', \''.$HTTP_POST_FILES['fileUpload']['name'].'\',\''.$k[1].'\');</script>';
?>
</body>

Espero que vosotros veais el fallo porque sólo se da con algunas imagenes y no sé por qué.

Muchas Gracias por todo.