Foros del Web » Programando para Internet » PHP »

Fallos con la guarda de la imagen

Estas en el tema de Fallos con la guarda de la imagen en el foro de PHP en Foros del Web. Hola, tengo el siguiente codigo php que procesa una imagen despues de subirla mediante un formulario la idea es que suba la imagen la redimensione ...
  #1 (permalink)  
Antiguo 08/10/2012, 12:13
 
Fecha de Ingreso: junio-2012
Ubicación: Wroclaw
Mensajes: 8
Antigüedad: 12 años, 6 meses
Puntos: 0
Exclamación Fallos con la guarda de la imagen

Hola, tengo el siguiente codigo php que procesa una imagen despues de subirla mediante un formulario la idea es que suba la imagen la redimensione y la guarde por separado estas dos cosas van pero al juntar lo de guardar y redimensionar no hace nada se supone que deberia guardar la imagen pequeña y borrar la anterior pero no hace ni una cosa ni la otra simplemente acaba el proceso de subida y nada no se sabe donde acab todo os paso el codigo a continuacion por favor ayuda

<?php
session_start();
$conexion = mysql_connect ("");
if (!$conexion) {
echo ("Error, no se a podido conectar con la base de datos");
exit();
}


mysql_select_db("") or die("Cannot select database");
$userP = $_SESSION['usuario'];


$resultID = mysql_query("SELECT ID FROM USERS WHERE '$userP' LIKE EMAIL", $conexion);
$rowID = mysql_fetch_row($resultID);
$userID = $rowID[0];

$resultPN = mysql_query("SELECT count(*) FROM PHOTOS", $conexion);
$rowPN = mysql_fetch_row($resultPN);
$photoName = $rowPN[0] + 1;


// Ruta donde se guardarán las imágenes
$directorio = $_SERVER['DOCUMENT_ROOT'].'/images/users/';

$max = 41000000;

// Recibo los datos de la imagen
$nombre = $_FILES['imagen']['name'];
$tipo = $_FILES['imagen']['type'];
$tamano = $_FILES['imagen']['size'];
$nombre2 = $photoName.".jpg";
if($tamaño<$max){
if($tamaño>0){
if((ereg(".jpg",$nombre))||(ereg(".png",$nombre))| |(ereg(".PNG",$nombre))||(ereg(".JPG",$nombre))||( ereg(".gif",$nombre))||(ereg(".GIF",$nombre))){


if((ereg(".jpg",$nombre))||(ereg(".JPG",$nombre))) {
$img_origen = imagecreatefromjpeg( $nombre );

@chmod($img_origen,777);

$ancho_origen = imagesx( $img_origen );//se ontiene el ancho de la imagen
$alto_origen = imagesy( $img_origen );//se obtiene el alto de la imagen
$ancho_limite=700;

if($ancho_origen>$alto_origen){// para foto horizontal

$ancho_origen=$ancho_limite;
$alto_origen=$ancho_limite*imagesy( $img_origen )/imagesx( $img_origen );

}else{//para fotos verticales
$alto_origen=$ancho_limite;
$ancho_origen=$ancho_limite*imagesx( $img_origen )/imagesy( $img_origen );
}
$img_destino = imagecreatetruecolor($ancho_origen ,$alto_origen );// se crea la imagen segun las dimensiones dadas
// copy/resize as usual
@chmod($img_destino,777);
imagecopyresized( $img_destino, $img_origen, 0, 0, 0, 0, $ancho_origen, $alto_origen, imagesx( $img_origen ), imagesy( $img_origen ) );
imagejpeg( $img_destino, $nombre2 );//se guarda la nueva foto sobreescribiendo la vieja
imagedestroy( $img_origen );
//imagedestroy( $img_destino );

}else if((ereg(".png",$nombre))||(ereg(".PNG",$nombre))) {
$img_origen = imagecreatefrompng( $nombre );

@chmod($img_origen,777);

$ancho_origen = imagesx( $img_origen );//se ontiene el ancho de la imagen
$alto_origen = imagesy( $img_origen );//se obtiene el alto de la imagen
$ancho_limite=700;

if($ancho_origen>$alto_origen){// para foto horizontal

$ancho_origen=$ancho_limite;
$alto_origen=$ancho_limite*imagesy( $img_origen )/imagesx( $img_origen );

}else{//para fotos verticales
$alto_origen=$ancho_limite;
$ancho_origen=$ancho_limite*imagesx( $img_origen )/imagesy( $img_origen );
}
$img_destino = imagecreatetruecolor($ancho_origen ,$alto_origen );// se crea la imagen segun las dimensiones dadas
// copy/resize as usual
@chmod($img_destino,777);
imagecopyresized( $img_destino, $img_origen, 0, 0, 0, 0, $ancho_origen, $alto_origen, imagesx( $img_origen ), imagesy( $img_origen ) );
imagepng( $img_destino, $nombre2 );//se guarda la nueva foto sobreescribiendo la vieja
imagedestroy( $img_origen );
//imagedestroy( $img_destino );

} else if((ereg(".gif",$nombre))||(ereg(".GIF",$nombre))) {
$img_origen = imagecreatefromgif( $nombre );

@chmod($img_origen,777);

$ancho_origen = imagesx( $img_origen );//se ontiene el ancho de la imagen
$alto_origen = imagesy( $img_origen );//se obtiene el alto de la imagen
$ancho_limite=700;

if($ancho_origen>$alto_origen){// para foto horizontal

$ancho_origen=$ancho_limite;
$alto_origen=$ancho_limite*imagesy( $img_origen )/imagesx( $img_origen );

}else{//para fotos verticales
$alto_origen=$ancho_limite;
$ancho_origen=$ancho_limite*imagesx( $img_origen )/imagesy( $img_origen );
}
$img_destino = imagecreatetruecolor($ancho_origen ,$alto_origen );// se crea la imagen segun las dimensiones dadas
// copy/resize as usual
@chmod($img_destino,777);
imagecopyresized( $img_destino, $img_origen, 0, 0, 0, 0, $ancho_origen, $alto_origen, imagesx( $img_origen ), imagesy( $img_origen ) );
imagegif( $img_destino, $nombre2 );//se guarda la nueva foto sobreescribiendo la vieja
imagedestroy( $img_origen );
//imagedestroy( $img_destino );

}



// Muevo la imagen desde su ubicación
// temporal al directorio definitivo
if( move_uploaded_file($_FILES['imagen']['tmp_name'],$directorio.$nombre2)){

mysql_query("INSERT INTO `PHOTOS` ( `PHOTO_NAME` ,`H_C_ID`, `USER_LABELS`, `USERS__ID`)VALUES ('$nombre2',NULL,NULL, '$userID')") ;
}}}}
else{
echo("No a podido almacenarse la imagen por ser superior a 4Mb");
sleep(5);
}


?>
  #2 (permalink)  
Antiguo 08/10/2012, 12:32
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Fallos con la guarda de la imagen

Es mucho código y sin usar el higlight

imagegif( $img_destino, $nombre2 );//se guarda la nueva foto sobreescribiendo la vieja

Después de haber guardado la imagen no necesitas (ni debes) usar move_uploaded_file(), sólo verificar que la imagen fue creada, usando file_exists()
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 09/10/2012, 04:50
 
Fecha de Ingreso: junio-2012
Ubicación: Wroclaw
Mensajes: 8
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Fallos con la guarda de la imagen

Hola Triby, gracias por contestar, dices que el move uploaded file no hace falta pero entonces como guardas la imagen resultante en el directorio que quieres que en mi caso esta guardado dentro de la variable $directorio??

En resumen se sube la imagen, la redimensionamos segun sea jpg gif o png y luego la idea es dejarla en el directorio/imges/users
  #4 (permalink)  
Antiguo 09/10/2012, 13:43
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Fallos con la guarda de la imagen

Tú mismo pusiste el comentario en la línea imagegif() y, si no se guarda la imagen, entonces ahí es donde tienes el problema.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 10/10/2012, 07:33
 
Fecha de Ingreso: junio-2012
Ubicación: Wroclaw
Mensajes: 8
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Fallos con la guarda de la imagen

Si pero asi guarda la imagen en el directorio raiz cuando yo con el move... lo que queria es que una vez subida la redimensionara y al llevara a la carpeta /images/users/ y no dejar las fotos en la raiz la verdad es que no tengo mucha idea de como manejar fotos por eso no se muy bien como hace las cosas.

por separado sin redimensionar si que guardo donde quiiero pero cuando quiero redimensionar no va la verdad es que voy algo perdido porque si quiero redimensionar se guarda en la raiz donde se ejecuta el php
  #6 (permalink)  
Antiguo 10/10/2012, 11:46
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Fallos con la guarda de la imagen

Encuentra las diferencias:

imagegif( $img_destino, $nombre2 );
move_uploaded_file($_FILES['imagen']['tmp_name'],$directorio.$nombre2)
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: fallos, formulario, mysql, usuarios, guardar
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 16:30.