Foros del Web » Programando para Internet » PHP »

error al subir imagenes grandes

Estas en el tema de error al subir imagenes grandes en el foro de PHP en Foros del Web. hola , saludos a todos, hace poco que estoy tratando de programar con php, lo que quise hacer es una funcion para poder subir imagenes, ...
  #1 (permalink)  
Antiguo 13/03/2012, 18:27
 
Fecha de Ingreso: marzo-2011
Ubicación: tucuman
Mensajes: 25
Antigüedad: 13 años
Puntos: 1
error al subir imagenes grandes

hola , saludos a todos, hace poco que estoy tratando de programar con php, lo que quise hacer es una funcion para poder subir imagenes,
mi funcion es la sigiente :

function cargarImagen($campo, $ruta, $ancho="0", $alto="0")
// campo es el nombre del input de la img, ruta es el lugar donde se cargara la img, ancho y alto es el ancho y alto de la img final
{
$errorCargar = $_FILES[$campo]["error"];

# con esto verifico si se selecciono una imagen, si se selecciono una imagen el numero de error es 1, 2 o 0
if ( $errorCargar != 4)
{

$tamanoIMG = $_FILES[$campo]["size"];
$nombreIMG = $_FILES[$campo]["name"];
$nombreIMG = str_replace(" ","",$nombreIMG);
$formatoIMG = $_FILES[$campo]["type"];

$stringConLaFoto= file_get_contents($_FILES[$campo]['tmp_name']); // conesto transformo la img en un string para poder modificarla
$original = imagecreatefromstring($stringConLaFoto); // creo una imagen a partir del string
$medidas[] = imagesx($original); // $mides[0] ANCHURA en pixeles
$medidas[] = imagesy($original); // $<img src="dw/tempImage.jpg" alt="" />mides[1] ALTURA en pixeles

// SI QUIERO SUBIR UNA IMAGEN Y ESTA YA EXISTE, ENTONCES SE CAMBIARA EL NOMBRE DE LA IMAGEN
$i="0";
while( file_exists($ruta.$nombreIMG) || $nombreIMG=="" )
{
$nombreIMG = $i.$nombreIMG;
$i++;
}

# si se paso como parametro el ancho de la img final y este es distinto al original
if( $ancho!=0 && $medidas[0] !=$ancho )
{
$finalAncho = $ancho;
}
else
{
$finalAncho = $medidas[0];
}

# si se paso como parametro el alto de la img final y este es distinto al original
if( $alto!=0 && $medidas[1] !=$alto )
{
$finalAlto = $alto;
}
else
{
$finalAlto = $medidas[1];
}

$thumb = imagecreatetruecolor($finalAncho,$finalAlto);

# segun el formato de la imagen sera como se va a guardar
switch($formatoIMG)
{
case 'image/pjpeg':
case 'image/jpeg':
imagecopyresampled($thumb,$original,0,0,0,0,$final Ancho,$finalAlto,$medidas[0],$medidas[1]);
imagejpeg($thumb,$ruta.$nombreIMG);
return $nombreIMG;
echo "La imagen fue cargada con exito.";
break;


case 'image/gif':
case 'image/png':
$colorTransparancia=imagecolortransparent($origina l);// devuelve el color usado como transparencia o -1 si no tiene transparencias
if($colorTransparancia!=-1)
{ //TIENE TRANSPARENCIA

$colorTransparente = imagecolorsforindex($original, $colorTransparancia); //devuelve un array con las componentes de lso colores RGB + alpha
$idColorTransparente = imagecolorallocatealpha($thumb, $colorTransparente['red'], $colorTransparente['green'], $colorTransparente['blue'], $colorTransparente['alpha']); // Asigna un color en una imagen retorna identificador de color o FALSO o -1 apartir de la version 5.1.3

imagefill($thumb, 0, 0, $idColorTransparente);// rellena de color desde una cordenada, en este caso todo rellenado del color que se definira como transparente
imagecolortransparent($thumb, $idColorTransparente); //Ahora definimos que en el nueva imagen el color transparente será el que hemos pintado el fondo.
}

switch ($formatoIMG)
{
case 'image/gif':
imagecopyresampled($thumb,$original,0,0,0,0,$final Ancho,$finalAlto,$medidas[0],$medidas[1]);
imagegif($thumb,$ruta.$nombreIMG);
return $nombreIMG;
break;
case 'image/png':
imagecopyresampled($thumb,$original,0,0,0,0,$final Ancho,$finalAlto,$medidas[0],$medidas[1]);
imagepng($thumb,$ruta.$nombreIMG);
return $nombreIMG;
break;
}
break;

default:
imagecopyresampled($thumb,$original,0,0,0,0,$final Ancho,$finalAlto,$medidas[0],$medidas[1]);
imagejpeg($thumb,$ruta.$nombreIMG);
return $nombreIMG;
break;
}

}
else
{
return 0;
}
}
// FIN FUNCION

con imagenes relativamente pequeñas anda todo bien , si son grandes me da un error .
otra cosa es q al subir imagenes .png no se suben bien , salen con fondo negro .
lo raro del error es q algunas veces lo da y otras eces no, cuando se tarda un cierto tiempo es q da el error , como si hubiera un limite de tiempo para subir la imagen .
disculpen que aya colocado toda la funcion , se q es muy larga , pero la pongo asi vean todo el codigo , esta funcion debuelve el nombre de la imagen y ese nombre lo almaceno en una base de datos. la funcion sirve para subir una imagen y redimensionarla.

saludos y gracias
  #2 (permalink)  
Antiguo 13/03/2012, 19:47
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Respuesta: error al subir imagenes grandes

hay limite de tiempo de 30 segundos para procesar la página y también se limita la subida de archivos, eso lo cambias en el php.ini.

el primero es:
max_execution_time = 30 por default usa 30 segundos.
el segundo es:
upload_max_filesize = 2M por default son 2 megas.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 15/03/2012, 12:06
 
Fecha de Ingreso: marzo-2011
Ubicación: tucuman
Mensajes: 25
Antigüedad: 13 años
Puntos: 1
Respuesta: error al subir imagenes grandes

gracias por responder .

yo subo las paginas a un servidor , no las tengo en mi propia pc , en el servidor donde encuentro el php.ini ???
saludos

Etiquetas: grandes, imagenes
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 14:51.