Foros del Web » Programando para Internet » PHP »

subir imagen a web

Estas en el tema de subir imagen a web en el foro de PHP en Foros del Web. hola muy buenas tengo este código que me sube una imagen a mi web y me pone unas medidas especificas. El caso es que cuando ...
  #1 (permalink)  
Antiguo 03/04/2013, 10:04
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 12 años, 8 meses
Puntos: 1
subir imagen a web

hola muy buenas tengo este código que me sube una imagen a mi web y me pone unas medidas especificas.


El caso es que cuando me sube la calidad es pésima y el color cambia y no entiendo cual es el problema este es el código que tengo puesto para que me realice esta operación:

Código PHP:
Ver original
  1. if (isset ($_FILES['logo']['name'])){
  2.     $nombre_archivo=$_FILES['logo']['name'];
  3.     echo $nombre_archivo;
  4.     $tamano=$_FILES['logo']['size'];
  5.     if($tamano > 100000000){
  6.     echo " OCUPA DEMASIADO.";
  7.     }else{
  8.         if(move_uploaded_file($_FILES['logo']['tmp_name'],"imglogo/" . $nombre_archivo)){
  9.             echo " HA SIDO SUBIDO.";
  10.         }else{
  11.             echo " NO HA SIDO SUBIDO.";
  12.  
  13.         }
  14. }
  15. }
  16.  
  17.  
  18.  //reducir tamaño imagen  
  19.  
  20.     # ruta de la imagen a redimensionar
  21.    $imagen= "imglogo/$nombre_archivo";
  22.     # ruta de la imagen final, si se pone el mismo nombre que la imagen, esta se sobreescribe
  23.    $imagen_final="imglogo/$nombre_archivo";
  24.     $ancho_nuevo=150;
  25.     $alto_nuevo=150;
  26.  
  27. ## FIN CONFIGURACION #############################
  28.  
  29.  
  30. redim ($imagen,$imagen_final,$ancho_nuevo,$alto_nuevo);
  31.  
  32.  
  33. function redim($ruta1,$ruta2,$ancho,$alto)
  34.     {
  35.     # se obtene la dimension y tipo de imagen
  36.    $datos=getimagesize ($ruta1);
  37.      
  38.     $ancho_orig = $datos[0]; # Anchura de la imagen original
  39.    $alto_orig = $datos[1];    # Altura de la imagen original
  40.    $tipo = $datos[2];
  41.      
  42.     if ($tipo==1){ # GIF
  43.        if (function_exists("imagecreatefromgif"))
  44.             $img = imagecreatefromgif($ruta1);
  45.         else
  46.             return false;
  47.     }
  48.     else if ($tipo==2){ # JPG
  49.        if (function_exists("imagecreatefromjpeg"))
  50.             $img = imagecreatefromjpeg($ruta1);
  51.         else
  52.             return false;
  53.     }
  54.     else if ($tipo==3){ # PNG
  55.        if (function_exists("imagecreatefrompng"))
  56.             $img = imagecreatefrompng($ruta1);
  57.         else
  58.             return false;
  59.     }
  60.      
  61.     # Se calculan las nuevas dimensiones de la imagen
  62.    if ($ancho_orig>$alto_orig)
  63.         {
  64.         $ancho_dest=$ancho;
  65.         $alto_dest=($ancho_dest/$ancho_orig)*$alto_orig;
  66.         }
  67.     else
  68.         {
  69.         $alto_dest=$alto;
  70.         $ancho_dest=($alto_dest/$alto_orig)*$ancho_orig;
  71.         }
  72.  
  73.     // imagecreatetruecolor, solo estan en G.D. 2.0.1 con PHP 4.0.6+
  74.    // $img2=@imagecreatetruecolor($ancho_dest,$alto_dest) or
  75.    $img2=imagecreate($ancho_dest,$alto_dest);
  76.  
  77.     // Redimensionar
  78.     // imagecopyresampled, solo estan en G.D. 2.0.1 con PHP 4.0.6+
  79.     @imagecopyresampled($img2,$img,0,0,0,0,$ancho_dest,$alto_dest,$ancho_orig,$alto_orig) or imagecopyresized($img2,$img,0,0,0,0,$ancho_dest,$alto_dest,$ancho_orig,$alto_orig);
  80.  
  81.     // Crear fichero nuevo, según extensión.
  82.     if ($tipo==1) // GIF
  83.         if (function_exists("imagegif"))
  84.             imagegif($img2, $ruta2);
  85.         else
  86.             return false;
  87.  
  88.     if ($tipo==2) // JPG
  89.         if (function_exists("imagejpeg"))
  90.             imagejpeg($img2, $ruta2);
  91.         else
  92.             return false;
  93.  
  94.     if ($tipo==3)  // PNG
  95.         if (function_exists("imagepng"))
  96.             imagepng($img2, $ruta2);
  97.         else
  98.             return false;
  99.      
  100.     return true;
  101.     }
  102.      $ruta='/blueberryswebtiendas/controlclientes/accesousuarios.php';
  103.     header("Location:".$ruta);
  104. ?>

se puede mejorar esto o hay algun problema que me proboca esta mala calidad de la imagen, gracias de antemano.
  #2 (permalink)  
Antiguo 03/04/2013, 10:08
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: subir imagen a web

usa imagecreatetruecolor(), aunque existen librerías más especializadas, como imagemagic, entre otras
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 03/04/2013, 10:15
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: subir imagen a web

maycolalvarez ok gracias

Última edición por carolina3; 03/04/2013 a las 10:49
  #4 (permalink)  
Antiguo 03/04/2013, 11:18
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: subir imagen a web

una pregunta aiguien sabe por que no me direcciona a la pagina

Código PHP:
Ver original
  1. $ruta='/blueberryswebtiendas/controlclientes/accesousuarios.php';
  2.     header("Location:".$ruta);
  #5 (permalink)  
Antiguo 03/04/2013, 11:27
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: subir imagen a web

¿no te sale algún error?, o algun echo antes del header, eso puede provocarte el fallo de la redirección

tambien verifica que el archivo no tenga BOM
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #6 (permalink)  
Antiguo 03/04/2013, 11:30
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: subir imagen a web

maycolalvarez no marca ningún error me informa que el archivo a sido subido funciona pero no me redirecciona y otra cosa al poner imagecreatetruecolor() los fondos de las imágenes en png me salen negros y lo de que no tenga BOM no se a que te refieres
  #7 (permalink)  
Antiguo 03/04/2013, 11:37
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: subir imagen a web

1 - si vas a redireccionar no puedes hacer echo antes, si te fijas en la primera parte del código tienes algunos para indicar si se subieron adecuadamente

2 - para el fondo negro yo apliqué después del imagecreatetruecolor:

Código PHP:
Ver original
  1. imagealphablending($img2, false);
  2. imagesavealpha($img2, true);

en mi caso guardaba siempre en PNG, puede que imagesavealpha no aplique para JPEG

3 - el BOM puede afectar la redirección también, investigue que es BOM

4 - use al principio error_reporting(E_ALL); para forzar la salida de todos los errores, luego quite dicha linea al resolverlos
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #8 (permalink)  
Antiguo 03/04/2013, 11:52
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: subir imagen a web

ok voy a ver

Etiquetas: usuarios
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 20:30.