Foros del Web » Programando para Internet » PHP »

Error en php

Estas en el tema de Error en php en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 05/09/2008, 09:15
 
Fecha de Ingreso: septiembre-2008
Mensajes: 8
Antigüedad: 15 años, 7 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.
  #2 (permalink)  
Antiguo 05/09/2008, 09:39
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: Error en php

Pues el error se puede deber a que el tiempo de ejecución del script se excede y no logra enviar la imagen.
Otro es que en PHP esta configurado por defecto que máximo se puede subir 2MB si pesa un poco mas eso va abortar.

Puedes modificarlo en el php.ini

Las variables son
upload_max_filesize
max_execution_time

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #3 (permalink)  
Antiguo 05/09/2008, 10:25
 
Fecha de Ingreso: septiembre-2008
Mensajes: 8
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Error en php

Muchisimas gracias ha funcionado :)
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 06:18.