Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] cambiar imagen según variable

Estas en el tema de cambiar imagen según variable en el foro de PHP en Foros del Web. hola muy buenas foreros tengo un script donde los usuarios de mi web suben imágenes, y se muestran en su perfil el caso es que ...
  #1 (permalink)  
Antiguo 09/04/2013, 10:49
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 12 años, 8 meses
Puntos: 1
cambiar imagen según variable

hola muy buenas foreros

tengo un script donde los usuarios de mi web suben imágenes, y se muestran en su perfil el caso es que si el usuario no ha subido una imagen, el lugar donde debe ir esta se visualiza un cuadro de color gris, predeterminado supongo por la etiqueta de <img>. Pues ahy esta lo que intento hacer que es que ese cuadro se muestre otra imagen donde por ejemplo ponga "aquí tu foto" esto es un suponer.

bueno si el usuario sube su imagen esta accede a una pagina php y la re dimensiona es decir la escala como puedo decirle a una variable que si no existe imagen me coloque la de "aquí tu foto" para entenderlo mejor pongo el código decir que la variable que coloca la foto simplemente sustituye el nombre de la foto con su formato , la cual llamo $nombre2

código de la imagen y la dirección a la pagina que escala.

Código PHP:
Ver original
  1. <?php
  2.        
  3.         $nombre2=$row_listadoproductos['foto_producto'];
  4.         $nombre2= "miniatura_detalle_producto.php?nombre=productos/" . $nombre2;
  5.        
  6.        
  7.        
  8.         ?>
  9.          
  10.                
  11.          
  12.          
  13.          
  14.          <img src="<?php echo $nombre2; ?>"   />



y aquí la pagina que la escala miniatura_detalle_producto.php

Código PHP:
Ver original
  1. <?php
  2. //ancho y alto del final
  3. $ancho=150;
  4. $alto=150;
  5.  
  6. //recibir nombre
  7. $nombre=$_GET['nombre'];
  8.  
  9. //poner imagen original en memoria
  10. $original=imagecreatefromjpeg($nombre);
  11. //analizar el tamaño
  12.  
  13. $tam=GetImageSize($nombre);
  14. $ancho_original=$tam[0];
  15. $alto_original=$tam[1];
  16.  
  17.  
  18. //calcular factor de escala
  19.  
  20. $escala_1=1;
  21. $escala_2=1;
  22. $escala_1=$ancho/$ancho_original;
  23. $escala_2=$alto/$alto_original;
  24.  
  25.  
  26. // comparar tamaño
  27. if($alto_original >$ancho_original)
  28. $escala_1=$escala_2;
  29.  
  30. //calculamos el nuevo tamaño
  31. $imagen_hori=ceil($ancho_original * $escala_1);
  32. $imagen_ver=ceil ($alto_original * $escala_1);
  33.  
  34. //creamos imagen pequeña vacia
  35. $final=imagecreatetruecolor($imagen_hori,$imagen_ver);
  36.  
  37.  
  38. // copiamos el original en la pequeña escala
  39. imagecopyresized($final,$original,0,0,0,0,$imagen_hori,$imagen_ver,ImageSX($original),ImageSY($original));
  40.  
  41.  
  42.  
  43. //mostramos imagen final
  44. Header("content-type:image/jpg");Imagejpeg($final);
  45. ImageDestroy($final);
  46.  
  47.  
  48. ?>

como podría mantener una imagen mientras el usuario no aya subido su foto, decir la imagen que pondría "tu foto aquí" gracias por la ayuda
  #2 (permalink)  
Antiguo 09/04/2013, 10:55
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: cambiar imagen según variable

como sabes si hay o no foto?

ese campo esta vacio->no hay o lleno->si hay?

cuando el usuario se da de alta, sube su imagen? o despues de darse de alta puede subir su imagen?
  #3 (permalink)  
Antiguo 09/04/2013, 10:58
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: cambiar imagen según variable

Tendrias que tener una imagen generica para cuando el usuario no haya subido la foto, entonces utilizas isset para comprobarar que esta variable exista y no sea NULL $row_listadoproductos['foto_producto'];

Seria

Código PHP:
Ver original
  1. $nombre2 = isset($row_listadoproductos['foto_producto']) ? $row_listadoproductos['foto_producto'] : 'fotogenerica.jpg';

Te puede servir http://php.net/manual/es/function.isset.php
__________________
Aprendiendo!!!
  #4 (permalink)  
Antiguo 09/04/2013, 10:59
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: cambiar imagen según variable

después de darse de alta, es decir la sube cuando quiera, es decir el campo esta vació
  #5 (permalink)  
Antiguo 09/04/2013, 11:06
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: cambiar imagen según variable

anacona16 así no me la muestra
  #6 (permalink)  
Antiguo 09/04/2013, 11:06
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: cambiar imagen según variable

isset($row_listadoproductos['foto_producto']) no le va a servir porque es para cuando se recibe una variable via POST, GET o REQUEST y en su caso la esta recuperando de una consulta, sin embargo lo de la foto generica es correcto.

Lo que debes hacer es al darlos de alta en el campo foto_producto guardar por default, en tu codigo, es decir de forma predeterminada la foto generica.

y cuando ellos suban su foto solo haces un update al campo foto_producto

lo que le veo problema es que despues que recuperas le haces la redimencion, seria mas facil que cuando el usuario la suba en ese momento hagas el proceso de redimencion y la muevas a tu carpeta donde se suben y guardes ya sea el nombre o toda la ruta de la foto para que lo unico que hagas sea:

Código PHP:
//si guardas toda la ruta
<img src="<?php echo $row_listadoproductos['foto_producto'];  ?>"/>

//si guardas solo el nombre
<img src="tu_ruta/<?php echo $row_listadoproductos['foto_producto'];  ?>"/>
  #7 (permalink)  
Antiguo 09/04/2013, 11:13
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: cambiar imagen según variable

Cita:
Iniciado por catpaw Ver Mensaje
isset($row_listadoproductos['foto_producto']) no le va a servir porque es para cuando se recibe una variable via POST, GET o REQUEST
Segun la Doc oficial isset Determina si una variable está definida y no es NULL.

Sin importar el origen de la variable...
__________________
Aprendiendo!!!
  #8 (permalink)  
Antiguo 09/04/2013, 11:13
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: cambiar imagen según variable

anacona16 si me funciona, lo que pasaba que le daba toda la ruta de la imagen si la pongo en la carpeta donde van las imágenes se muestra, catpaw merci por la ayuda ahora pruebo si al subir la foto se sustituye voy a probar, pero no descarto lo de campo foto_producto guardar por default ahora os informo
  #9 (permalink)  
Antiguo 09/04/2013, 11:15
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: cambiar imagen según variable

Cita:
Segun la Doc oficial isset Determina si una variable está definida y no es NULL.
Cierto tienes razon, hace tiempo habia leido la definicion y me quede con esta definicion:

Cita:
Si son pasados varios parámetros, entonces isset() devolverá TRUE
Aclarado gracias

carolina3

segun yo te recomiendo que hagas la redimension una vez que es al subir la imagen, no cada vez que las muestras, siento que es lo optimo
  #10 (permalink)  
Antiguo 09/04/2013, 11:18
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: cambiar imagen según variable

ok catpaw revisare el código gracias a los dos, de momento lo que quería funciona
  #11 (permalink)  
Antiguo 09/04/2013, 11:19
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: cambiar imagen según variable

la verdad que a la hora de escalar me pierde calidad la foto

Etiquetas: según, usuarios, variable
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 15:01.