Foros del Web » Programando para Internet » PHP »

Fallo al subir imagen mediante formulario y bajar peso y tamaño

Estas en el tema de Fallo al subir imagen mediante formulario y bajar peso y tamaño en el foro de PHP en Foros del Web. Buenas amigos, soy visitante habitual de estos foros desde hace tiempo porque me han resuelto muchisimos problemas pero esta vez no encuentro solucion al que ...
  #1 (permalink)  
Antiguo 07/06/2012, 02:15
 
Fecha de Ingreso: septiembre-2008
Mensajes: 5
Antigüedad: 15 años, 6 meses
Puntos: 0
Fallo al subir imagen mediante formulario y bajar peso y tamaño

Buenas amigos, soy visitante habitual de estos foros desde hace tiempo porque me han resuelto muchisimos problemas pero esta vez no encuentro solucion al que tengo.

Os comento, tengo un formulario en el que recojo datos y unas imagenes, al recoger la imagen la reduce de tamaño, baja la calidad, borra la original y se queda con la creada. El fallo esta en que el codigo que tengo me funciona perfecto con imagenes en *.jpg pero quiero que me funcione con *.jpg, *.bmp y *.png.

Aqui teneis el codigo que recibe los datos del formulario y modifica la imagen
Código:
if (!$_FILES['imagen']['name'])
$imagen = $_SESSION['Oldimagen'];
else
{
unlink ("../images/categorias/".$_SESSION['Oldimagen']);
$tamano = $_FILES["imagen"]['size'];          /* Tamaño del archivo en bytes */   
$tipo = $_FILES["imagen"]['type'];            /* Extencion del archivo */  
$archivo = $_FILES["imagen"]['name'];         /* Nombre del archivo */     
$prefijo = substr(md5(uniqid(rand())),0,6);    /* Prefijo aleatorio */ 
  
$Proporciones_Archivo = getimagesize($_FILES["imagen"]['tmp_name']);  /* Obtencion de las proporciones del archivo */    
$Ancho = $Proporciones_Archivo[0];                                   /* Proporcion en Ancho */ 
$Alto = $Proporciones_Archivo[1];                                    /* Proporcion en Alto */ 
$Temporal_Archivo = $_FILES["imagen"]['tmp_name'];
  
$extension = explode(".",$archivo);   
$num = count($extension)-1;    
 
$name = basename($archivo,".".$extension[$num]);     /* Nombre base del archivo */    
$imagen = $name."_".$_SESSION['idcat'].".".$extension[$num];   /* Nombre real de la imagen */   
  
if ($archivo != "") {   
$ext = strtolower($extension[$num]);   
 if($ext == 'jpg' or $ext == 'bmp'or $ext == 'png'){
$destino = "../images/categorias/".$imagen;   
if (is_uploaded_file($Temporal_Archivo)){
move_uploaded_file($Temporal_Archivo, $destino);
$origen = imagecreatefromjpeg($destino);            /* Crea una imagen en base de otra imagen */
//Se define el maximo ancho y alto que tendra la imagen final
$max_ancho = 65;
$max_alto = 65;
//Ancho y alto de la imagen original
list($ancho,$alto)=getimagesize($destino);
//Se calcula ancho y alto de la imagen final
$x_ratio = $max_ancho / $ancho;
$y_ratio = $max_alto / $alto;
//Si el ancho y el alto de la imagen no superan los maximos,
//ancho final y alto final son los que tiene actualmente
if( ($ancho <= $max_ancho) && ($alto <= $max_alto) )
{//Si ancho
$ancho_final = $ancho;
$alto_final = $alto;
}
/* si proporcion horizontal*alto mayor que el alto maximo, alto final es alto por la proporcion horizontal es decir, le quitamos al ancho, la misma proporcion que le quitamos al alto */
elseif (($x_ratio * $alto) < $max_alto)
{
$alto_final = ceil($x_ratio * $alto);
$ancho_final = $max_ancho;
}
/* Igual que antes pero a la inversa*/
else
{
$ancho_final = ceil($y_ratio * $ancho);
$alto_final = $max_alto;
}
//Creamos una imagen en blanco de tamaño $ancho_final  por $alto_final .
$tmp=imagecreatetruecolor($ancho_final,$alto_final);
//Copiamos $img_original sobre la imagen que acabamos de crear en blanco ($tmp)
imagecopyresampled($tmp,$origen,0,0,0,0,$ancho_final, $alto_final,$ancho,$alto);
//Se destruye variable $img_original para liberar memoria
imagedestroy($origen);
//Definimos la calidad de la imagen final
$calidad=40;
//Se crea la imagen final en el directorio indicado
imagejpeg($tmp,$destino,$calidad);
$statusi = "Archivo subido: <b>".$imagen."</b>";   
}
else {   
$statusi = "Error: No se logro subir el archivo";   
}   
}
else {   
$statusi = "Error: Solo se permiten (*.jpg,*.bmp)";   
}   
}
else {   
$statusi = "Error: Archivo no encontrada para subir al Servidor";   
}
}

Última edición por HyperChorly; 07/06/2012 a las 02:16 Razón: fallo de ortografía
  #2 (permalink)  
Antiguo 07/06/2012, 07:30
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 7 meses
Puntos: 1532
Respuesta: Fallo al subir imagen mediante formulario y bajar peso y tamaño

si te fijas imagecreatefromjpeg, solo debes de verificar el tipo y usar su función semejante
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 07/06/2012, 07:43
Avatar de webseficientes  
Fecha de Ingreso: enero-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 320
Antigüedad: 19 años, 1 mes
Puntos: 14
Respuesta: Fallo al subir imagen mediante formulario y bajar peso y tamaño

$origen = imagecreatefromjpeg($destino)

Tiene su equivalente para gif, png y otros
http://www.php.net/manual/en/ref.image.php
__________________
Gerardo Benitez
Programador Web Freelance, SEO, Diseño web
  #4 (permalink)  
Antiguo 07/06/2012, 13:23
 
Fecha de Ingreso: septiembre-2008
Mensajes: 5
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Fallo al subir imagen mediante formulario y bajar peso y tamaño

Madre mia que burreras, que facil era, muchas gracias a los dos.

Tengo una duda, ya se lo que tengo que hacer para los png y los gif pero los bmp no, cual usaria? esta imagecreatefromwbmp?

Etiquetas: bajar, fallo, formulario, imagenes, mediante, peso, tamaño, variables
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 23:32.