Cambiar Texto en imagenes Leido 19.111 veces

 
  Broco
Pregunta
Resuelta.
Como, creo imagenes en php?
Bueno nose explicarme mucho pero os dejo un ejemplo
http://www.placasrojas.com.ar/
Osea:
http://www.placasrojas.com.ar/placa.php?linea1=gfhfghf&linea2=ghfghf&linea3=ghfgh&linea4=fghdddd+

 

 





  Jesús
Respuesta correcta
Si te interesa en asp.net sería así:



<%@ Page Language="VB" AutoEventWireup="false" %>
<%
'Guardo la IP
Dim LaIP$ = System.Web.HttpContext.Current.Request.UserHostAddress

'Descargo los datos de la imagen
Dim UrlADescargar As System.Net.WebRequest = System.Net.WebRequest.Create("http://www.wikun.com/skin11/logoc.jpg")
Dim ImagenDescargada As System.Net.WebResponse = UrlADescargar.GetResponse()

'Inserto los datos de la imagen
Dim Imagen As System.Drawing.Image = System.Drawing.Image.FromStream(ImagenDescargada.GetResponseStream())

'Escribo la IP
Dim Graficos As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(Imagen)
Graficos.DrawString(LaIP, New System.Drawing.Font("Arial", "12"), Drawing.Brushes.Black, 0, 0)
Graficos.DrawString(LaIP, New System.Drawing.Font("Verdana", "16"), Drawing.Brushes.Red, 140, 150)
Graficos.DrawString(LaIP, New System.Drawing.Font("Tahoma", "20"), Drawing.Brushes.Blue, 100, 0)
Graficos.Dispose()

'Muestro la Imagen
Imagen.Save(Response.OutputStream, Drawing.Imaging.ImageFormat.Jpeg)

%>


 

 


  [NiCo]
Ha recibido:
1 premios
Esto es lo que buscas creo:

Entra
Entra

Salu2

 

 


  !!r0Nk0!!
Ha recibido:
1 premios
Tienes uno en wikun, si no entiedes algo lo dices, es bastante simple:

www.wikun.com/?tema=23464

 

 


  Broco
e puesto



header("Content-type: image/png");
$imagen = imagecreatefrompng("$fondo");
$negro = imagecolorallocate($imagen,R, G, B );
$texto = "Pruebaaa";
$fuente = "arial.ttf";
imagettftext($imagen,100,100,0,5,$color,$fuente,"texto");
imagepng($imagen);


Pero no funciona :S cuando entro a la direccion me dice
No se puede mostrar la imagen "Direccion del archibo php" porque contiene errores.

 

 





  [NiCo]



header("Content-type: image/png");
$imagen = imagecreatefrompng("$fondo");
$negro = imagecolorallocate($imagen,R, G, B );
$texto = "Pruebaaa";
$fuente = "arial.ttf";
imagettftext($imagen,100,100,0,5,$color,$fuente,"texto");
imagepng($imagen);



Puede ser que en el R, G, B esta tu error, porque tenes q reemplazarlos por nº. En este caso como es negro seria: 0, 0, 0

Salu2

 

 


  Broco
No no me funciona con 0, el codigo de pablo azaa tampoco :S
 

 


  [NiCo]



header("Content-type: image/png");
$imagen = imagecreatefrompng("$fondo");
$negro = imagecolorallocate($imagen,0, 0, 0 );
$texto = "Pruebaaa";
$fuente = "arial.ttf";
imagettftext($imagen,100,100,0,5,$color,$fuente,"texto");
imagepng($imagen);



Tenes que reemplazar $fondo por la direccion de la imagen png, por ejemplo boton.png

Salu2

 

 


  Broco
ya ya lo e echo..
 

 


  [NiCo]
Que raro, no puedo encontrar donde esta el error, el codigo parece estar correcto.
Subiste el arial.ttf al servidor no??

Salu2

 

 





  Broco
si y no funciona :S
 

 


  [NiCo]
Respuesta correcta
Ha recibido:
1 premios
Podes hacerlo con imagestring, con la diferencia que no puedes elegir el tipo de fuent:



header("Content-type: image/png");
$imagen = imagecreatefrompng("$fondo");
$negro = imagecolorallocate($imagen,0,0,0);
$texto = "Pruebaaa";
imagestring($imagen,5,0,0,$texto,$color);
imagepng($imagen);



A mi me quedo asi:

Entra

Salu2

 

 


  !!r0Nk0!!
Pon una imagen llamada fondo.png y la fuente llamada fuente.ttf en el mismo sitio donde tengas el php.
Puedes cambiar los nombres por ejemplo si la fuente es arial.ttf pues lo modificas.



header("Content-type: image/png");
$fondo = "fondo.png";
$imagen = imagecreatefrompng("$fondo");
$fuente = "fuente.ttf";
$color = imagecolorallocate($imagen,0,0,0);
$texto= "prueba";
imagettftext($imagen,51,0,0,53,$color,$fuente, $texto);
imagepng($imagen);


PD: Ten en cuenta que el texto va a ser negro a si que pon un fondo claro o cambia el color

Blanco sería:

$color = imagecolorallocate($imagen,255,255,255);

 

 


  Broco
no me funciona ninguno :S
¿que archibos as metido tu nico?

 

 


  !!r0Nk0!!
Respuesta correcta
Ha recibido:
1 premios
Si lo pegas tal y como te lo he puesto, pones una fuente llamada fuente.ttf y un fondo llamado fondo.png tiene que funcionarte.

Ya van 2 que no te funcionan que lo deberian hacer, puede que el problema lo tengas en tu pc.

PD: Lo he probado y funciona perfectamente. lo he subido a megaupload junto con el fondo y la fuente

www.megaupload.com/?d=XBJ1WJFT

 

 


  Broco
si me funciona ronco ::)
Muchas gracias otra vez y a Nico tambien.
Una cosa, ¿como eligo la posicion del texto? ¿tamaño?
comandos como <center> ¿se pueden usar?
el fallo de antes era por <body> <header> y <style>
Tambien quiero hacer que muestre la ip
e puesto



header("Content-type: image/png");
$fondo = "fondo.png";
$imagen = imagecreatefrompng("$fondo");
$fuente = "fuente.ttf";
$color = imagecolorallocate($imagen,0,0,0);
$texto = "$REMOTE_ADDR";
imagettftext($imagen,51,0,0,53,$color,$fuente, $texto);
imagepng($imagen);


y no funciona tambieen e puesto, el $REMOTE_ADDR sin comillas y tampoco funciona :S

 

 


  !!r0Nk0!!
Respuesta correcta
Ha recibido:
1 premios
Pues está bien puesto

$texto = "$REMOTE_ADDR";

Te explico lo siguiente:

imagettftext($imagen,tamaño,angulo,posicionX,posicionY,$color,$fuente, $texto);

Tamaño= tamaño del texto
angulo: el angulo de inclinacion en grados que quieras darle,gira hacia la izquierda, puedes si quieres poner los grados en negativo para que se incline hacia el otro lado.
posicionX: la separacion en px del margen izquierdo del texto en el fondo
posiciony: la separacion en px del margen superior del texto en el fondo
$color: el color
$fuente: la fuente
$texto: el texto.

Un ejemplo es que si quieres que el texto quede mas centrado sería aumentar posicionX, el número depende tamaño del fondo si por ejemplo es 1024px × 768px si pones en posicionX 512, emepzará a escribir justo en el medio de la imagen.

MODIFICADO:

He hecho una modificación por si no quieres poner una imagen de fondo y quieres generarla

$imagen = imagecreatetruecolor(400, 30);

He añadido comentarios y al final libera de memoria la imagen con:

imagedestroy($imagen);



// Se devuelve imagen png
header("Content-type: image/png");
//creamos fondo de 400px x200px
$imagen = imagecreatetruecolor(400, 200);
//nombre y ruta de la fuente elegida
$fuente = "fuente.ttf";
//color elegido R,G,B
$color = imagecolorallocate($imagen,255,255,255);
//Texto a mostrar
$texto = "texto";
//imagettftext($imagen,tamaño,angulo,posicionX,posicionY,$color,$fuente, $texto);
//Tamaño= tamaño del texto, angulo: el angulo de inclinacion en grados
//posicionX: la separacion en px del margen izquierdo del texto en el fondo, posiciony:margen superior
//$color: el color, $fuente: la fuente, $texto: el texto.
imagettftext($imagen,51,0,0,53,$color,$fuente, $texto);
//muestra la imagen
imagepng($imagen);
//liberamos memoria
imagedestroy($imagen);



 

 


  Broco
Muchisimas gracias Ronco :)¡

 

 


  Broco
Jaja, que pidon que soy xD
quiero esto



header("Content-type: image/png");
$fondo = "amigo.png";
$imagen = imagecreatefrompng("$fondo");
$fuente = "fuente.ttf";
$color = imagecolorallocate($imagen,0,0,0);
$texto = "prueba";
$izquierda= $_REQUEST["izquierda"];
imagettftext($imagen,15,0,$izquierda,23,$color,$fuente, $texto);
imagepng($imagen);


Nose por que no funciona :/
Osea desde un $_REQUEST seleccionar la posicion del texto.

 

 


  Broco
Lo de la IP me funciona si pongo
$_SERVER['REMOTE_ADDR'];
Solo me falta lo de poder cambair la posicion desde el enlace

 

 


  !!r0Nk0!!
Respuesta correcta
Ha recibido:
1 premios
Y donde pasas el valor de izquierda? en un formulario a parte o como. Así funciona perfectamente:

posicion.html



<html><title>Posicion Texto</title>
<body>
<FORM ACTION="imag.php" METHOD="post">
Posicion : <INPUT TYPE="text" NAME="izquierda">
<BR>
<INPUT TYPE="submit" CLASS="boton" VALUE="Enviar">
</FORM>
</body>
</html>


imag.php



header("Content-type: image/png");
$fondo = "amigo.png";
$imagen = imagecreatefrompng("$fondo");
$fuente = "fuente.ttf";
$color = imagecolorallocate($imagen,0,0,0);
$texto = $_SERVER['REMOTE_ADDR'];
$izquierda= $_REQUEST["izquierda"];
imagettftext($imagen,15,0,$izquierda,23,$color,$fuente, $texto);
imagepng($imagen);


 

 


  Broco
La ultima pregunta..
¿se puede poner de fondo una imagen alojada en otro host?



header("Content-type: image/png");
$fondo = $_REQUEST["fondo"];
$imagen = imagecreatefrompng("$fondo");
$fuente = "fuente.ttf";
$color = imagecolorallocate($imagen,0,0,0);
$texto = $_SERVER['REMOTE_ADDR'];
$izquierda= $_REQUEST["izquierda"];
imagettftext($imagen,15,0,$izquierda,23,$color,$fuente, $texto);
imagepng($imagen);


Me ficona pero si estan en mi host osea poniendo fondo.png pero si pongo una direccion completa nu funciona.. ¿se puede hacer que funcione con una url de una imagen por ejemplo de imageshacks?

 

 


  Broco
se que primero hay que abrir la imaegn con fopen pero no se como hacerlo :S e probado varias cosas pero no me funcionan.
 

 


  Jesús
Respuesta correcta
Si te interesa en asp.net sería así:



<%@ Page Language="VB" AutoEventWireup="false" %>
<%
'Guardo la IP
Dim LaIP$ = System.Web.HttpContext.Current.Request.UserHostAddress

'Descargo los datos de la imagen
Dim UrlADescargar As System.Net.WebRequest = System.Net.WebRequest.Create("http://www.wikun.com/skin11/logoc.jpg")
Dim ImagenDescargada As System.Net.WebResponse = UrlADescargar.GetResponse()

'Inserto los datos de la imagen
Dim Imagen As System.Drawing.Image = System.Drawing.Image.FromStream(ImagenDescargada.GetResponseStream())

'Escribo la IP
Dim Graficos As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(Imagen)
Graficos.DrawString(LaIP, New System.Drawing.Font("Arial", "12"), Drawing.Brushes.Black, 0, 0)
Graficos.DrawString(LaIP, New System.Drawing.Font("Verdana", "16"), Drawing.Brushes.Red, 140, 150)
Graficos.DrawString(LaIP, New System.Drawing.Font("Tahoma", "20"), Drawing.Brushes.Blue, 100, 0)
Graficos.Dispose()

'Muestro la Imagen
Imagen.Save(Response.OutputStream, Drawing.Imaging.ImageFormat.Jpeg)

%>


 

 


  Broco
te doy 3 puntos por que seguramente que lo usare.. pero ahora lo necesito de php...
 

 


  Broco
Bueno lo voy a hacer en asp.net.. e puesto ese código y me dice esto.

Server Error in '/' Application.
--------------------------------------------------------------------------------

The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.

Requested URL: /a.aspx

 

 





    ¿Cuantas columnas?     | 2 columnas | 3 columnas | 4 columnas | 5 columnas | 6 columnas |  
    Escribe la dirección web de la imagen:
  Publica tu respuesta  |  Haz Click en el siguiente cuadro para escribir