Foros del Web » Programando para Internet » PHP »

imagen dinamica

Estas en el tema de imagen dinamica en el foro de PHP en Foros del Web. Necesito crear un banner segun determinada informacion dinamica que obtengo de una base de datos. Creo que el procedimiento es una vez creado el banner ...
  #1 (permalink)  
Antiguo 28/07/2008, 19:24
 
Fecha de Ingreso: junio-2008
Mensajes: 110
Antigüedad: 15 años, 10 meses
Puntos: 0
imagen dinamica

Necesito crear un banner segun determinada informacion dinamica que obtengo de una base de datos.
Creo que el procedimiento es una vez creado el banner completo, en X formato, agregar los string que obtengo de la base de datos.
Lo que no se es como agregarlos a la imagen y crear otra imagen con los datos agregados. En que cordenadas lo agrega, etc.
  #2 (permalink)  
Antiguo 28/07/2008, 20:16
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Respuesta: imagen dinamica

Hola,
investiga un poco por aquí: http://ar2.php.net/manual/es/book.image.php

Saludos.
  #3 (permalink)  
Antiguo 28/07/2008, 20:20
Avatar de xf_corp  
Fecha de Ingreso: mayo-2008
Mensajes: 57
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: imagen dinamica

Hola, si se trata de un banner de imagen estática, y suponiendo que los valores que se obtienen de la BD se recuperan en por ejemplo las variables $valorHeight, $valorWidth, $rutaNombreImagen, etc... dependiendo de los datos a emplear, se puede hacer algo así:

echo "<img height=".$valorHeight." width=".$valorWidth." src=".$rutaNombreImagen." />";

Si tu banner se trata de un flash por ejemplo, siguiendo el mismo principio puedes armar el bloque de código necesario de código simplemente concatenando las cadenas estáticos requeridas con los valores dinámicos obtenidos de la BD.

Y si deseas darle una ubicación determinada, puedes emplear algún layer por ejemplo:

Código:
<!--Esto sería HTML puro...-->
<div id="contenedor">
               <!--Aquí se abre el bloque de código PHP-->
               <?
                    echo "<img height=".$valorHeight." width=".$valorWidth." 
                                                               src=".$rutaNombreImagen." />";

               ?>
               <!--Se cierra el bloque PHP y se continua con HTML...-->
</div>
Y en la declaración del estilo del layer ("contenedor" en este ejemplo), determinar las coordenadas en las cuales deseas que aparezca tu banner. O bien si le has destinado espacio al banner dentro de alguna celda en una tabla HTML, pues debes colocar solo el bloque de código PHP del ejemplo dentro de dicha celda. Espero que te sea útil .
  #4 (permalink)  
Antiguo 29/07/2008, 05:16
 
Fecha de Ingreso: junio-2008
Mensajes: 110
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: imagen dinamica

no se si es a lo que te refieres, pero lo que necesito es que mediante una imagen estatica agregar strings dinamicos sobre esa imagen. Por ej, un nombre de usuario, apellido, que eso lo voy levantando de una DB.
  #5 (permalink)  
Antiguo 29/07/2008, 07:37
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Respuesta: imagen dinamica

Bueno, si estuviste leyendo un poco el link que te dejé habrás visto que las imágenes se crean (quedando cargadas en una variable), por ejemplo con imagecreatetruecolor(), luego se dibuja sobre ellas con las distintas funciones y finalmente se guarda o envía al navegador en el formato deseado, con imagejpg() imagepng() etc.

Para dibujar (o agregar texto) sobre una imagen estática, debes crearla a partir de ella:

imagecreatefromgd2()
imagecreatefromgd2part()
imagecreatefromgd()
imagecreatefromgif()
imagecreatefromjpeg()
imagecreatefrompng()
imagecreatefromstring()
imagecreatefromwbmp()
imagecreatefromxbm()
imagecreatefromxpm()

(encontrarás todas las funciones en el link anterior)

Por ejemplo,
Código PHP:
$im imagecreatefromjpg('fondo.jpg'); 
Así se creará una nueva imagen con la original de fondo.
Si tienes en otro archivo un PNG transparente puedes pegarlo sobre esta para hacer, por ejemplo, marcas de agua. Conservará la transparencia.

Eso lo haces abriendo ese archivo con imagecreatefrompng() y luego con imagecopy() lo llevas desde esa imagen a $im. Por ejemplo:

Código PHP:
$im2 imagecreatefrompng('milogo.png');
imagecopy($im$im210010000100100); 
Para agregar texto podés usar imagettftext() que te permite escribir texto utilizando un font True Type (.TTF) subido al servidor.

Código PHP:
imagettftext($im2001020$negro"Arial.ttf"$texto); 
Las coordenadas son desde la esquina superior izquierda. Los colores se crean previamente con imagecolorallocate().

Y finalmente al terminar, la enviamos al navegador:

Código PHP:
imagejpg($im); 
O puede ser guardada. Si la envias de la forma anterior, y con el Header Content-Type correspondiente, podés incluirla en una página como una imagen cualquiera:

Código:
<img src="tu_script.PHP" />
Investiga un poco sobre eso y obtendrás lo que necesitas! Es sencillo.

Espero que te sirva.
Saludos.
  #6 (permalink)  
Antiguo 29/07/2008, 10:09
Avatar de xf_corp  
Fecha de Ingreso: mayo-2008
Mensajes: 57
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: imagen dinamica

Interesante, aunque una disculpa creo que malentendí tu post . Espero que compartas tu solución, como mencione, me resulta interesante.
  #7 (permalink)  
Antiguo 31/07/2008, 06:19
 
Fecha de Ingreso: junio-2008
Mensajes: 110
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: imagen dinamica

tengo el siguiente inconveniente:

Código:
<?php

header("Content-type: image/png");

$im = imagecreatefrompng("banner.png");

$negro = imagecolorallocate($im, 0, 0, 0);

$fuente = 'arial.ttf';
$texto = "ejemplo";

imagettftext($im, 20, 0, 10, 20, $negro, $fuente, $texto);

imagepng($im);

imagedestroy($im);


?>
ME arroja el siguiente error:

Código:
The image “http://localhost/imgdin/” cannot be displayed, because it contains errors.
  #8 (permalink)  
Antiguo 31/07/2008, 08:01
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Respuesta: imagen dinamica

Quitá el header (o comentalo) para que el navegador muestre el codigo de la imagen y fijate si no hay algún error de php antes de todos los simbolos.

Si lo hay, el texto del error pasa como parte de la imagen y por supuesto no es una imagen válida.

Saludos
  #9 (permalink)  
Antiguo 31/07/2008, 08:05
 
Fecha de Ingreso: junio-2008
Mensajes: 110
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: imagen dinamica

Me tira ese error:

Warning: imagettftext() [function.imagettftext]: Invalid font filename in C:\AppServ\www\imgdin\index.php on line 12


linea 12:

Código:
imagettftext($im, 20, 0, 10, 20, $negro, $fuente, $texto);
En la carpeta de WINDOWS/FONTS tengo la fuente instalada, el archivo se llama ARIAL.TTF
  #10 (permalink)  
Antiguo 31/07/2008, 08:12
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Respuesta: imagen dinamica

No encuentra la fuente, nada más.
Asegurate que esté el archivo arial.ttf en el mismo directorio del script y que el nombre sea idéntico (mayúsculas, etc.)

Saludos.
  #11 (permalink)  
Antiguo 31/07/2008, 08:26
 
Fecha de Ingreso: junio-2008
Mensajes: 110
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: imagen dinamica

Muchas Gracias!!!, me ha sido muy util tu ayuda.
  #12 (permalink)  
Antiguo 31/07/2008, 08:46
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Respuesta: imagen dinamica

Un gusto ;)
  #13 (permalink)  
Antiguo 02/08/2008, 09:58
 
Fecha de Ingreso: junio-2008
Mensajes: 110
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: imagen dinamica

me surgio un inconveniente, necesito agregar un string sobre la imagen que contenga el simbolo de euro €.
Pero cuando lo agrego no lo muestra.

imagettftext($im, 10, 0, 400, 56, $negro, $fuente, "otro2€");

que puede ser?
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:02.