Foros del Web » Programando para Internet » PHP »

Escribir en imagen

Estas en el tema de Escribir en imagen en el foro de PHP en Foros del Web. Buenas, estoy haciendo un script para escribir encima de una imagen: Código: <? header("Content-type: image/jpeg"); $im = imagecreate(204, 80); $blanco = imagecolorallocate($im, 255, 255, 255); ...
  #1 (permalink)  
Antiguo 17/02/2005, 10:04
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 9 meses
Puntos: 0
Escribir en imagen

Buenas, estoy haciendo un script para escribir encima de una imagen:

Código:
<?
  header("Content-type: image/jpeg");
  $im = imagecreate(204, 80);
  $blanco = imagecolorallocate($im, 255, 255, 255);
  $negro = imagecolorallocate($im, 0, 0, 0);
     			
  // Reemplaze la ruto con su propio ruta a la fuente
  imagettftext($im, 10, 0, 10, 20, $negro, "../img/verdana.ttf",$texto);
  imagejpeg($im);
  imagedestroy($im);
?>
Pero estoy intentado que texto sea una tabla de datos, pero lo único que consigo son saltos de línea con \n.
No hay ninguna manera de hacer una tabla?
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #2 (permalink)  
Antiguo 17/02/2005, 11:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Parece que vas a tener que poner tu texto posicionado en coordenadas (pixels) o hacerte alguna función que por un lado ingreses tu "string" (cadena) y te haga todo el cálculo para generar las coordenadas de cada "línea" en función a datos como el de la tipografía usada, puntos de esta .. etc.

Un saludo,
  #3 (permalink)  
Antiguo 17/02/2005, 11:12
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 9 meses
Puntos: 0
Ui que mal roio..
Va a ser que ya me apañaré por coordenadas o con algun truquillo.. quee eso me ha sonado muy mal. :)
Gracias Cluster, pensaba que habría alguna manera sencilla y rapida para solucionarlo!
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #4 (permalink)  
Antiguo 17/02/2005, 11:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Parece que alguien ya se dió el trabajo que mencionaba antes:

Cita:
deejay_world at yahoo dot com
10-Jun-2002 10:25
Width ImageString, the strings you draw are not automatically wrapped width the edge of the image. You may use this function to automatically wrap them:

Código PHP:
function ImageStringWrap($image$font$x$y$text$color$maxwidth)
{
   
$fontwidth ImageFontWidth($font);
   
$fontheight ImageFontHeight($font);

   if (
$maxwidth != NULL) {
       
$maxcharsperline floor($maxwidth $fontwidth);
       
$text wordwrap($text$maxcharsperline"\n"1);
     }

   
$lines explode("\n"$text);
   while (list(
$numl$line) = each($lines)) {
       
ImageString($image$font$x$y$line$color);
       
$y += $fontheight;
     }

So, in particular, if you want to wrap a text with the edge of the Image, you may do:
ImageStringWrap($img, $font, 0, $y, $text, $color, ImageSX($img) );
Un saludo,
  #5 (permalink)  
Antiguo 17/02/2005, 11:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si, la manera más rápida es usar google xDDDD .. ahí tienes un ejemplo ya implementado como "función" listo para usar .. pruebalo a ver que tal.

Un saludo,
  #6 (permalink)  
Antiguo 17/02/2005, 11:52
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 9 meses
Puntos: 0
Ah, gracias Cluster.. yo no encontré nada
Una cosa, he estado haciendo pruebas y noto que cuando escribo sobre una imagen, alrededor de lo que se escribe se deteriora mucho la calidad de la imagen...
A que se debe esto? Hay alguna manera de disimularlo?
Prentendo que el usuario que visite esa imagen no sepa que ese texto es una imagen...
Gracias, como siempre por toda vuestra ayuda
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #7 (permalink)  
Antiguo 17/02/2005, 13:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. ahí no sé mucho del tema .. pero seguro que algo habrá como para hacer un "anti-aliasing" o similar ..

De hecho en la documentación de la función imagettftext() hablan algo del tema:

Cita:
color
The color index. Using the negative of a color index has the effect of turning off antialiasing. See imagecolorallocate().
http://www.php.net/imagettftext

Por cierto .. probastes la función? .. funciona bien?

Un saludo,
  #8 (permalink)  
Antiguo 18/02/2005, 04:00
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 9 meses
Puntos: 0
He estado buscando sobre el antialiasing ese pero no encuentro mucho, y lo que encuentro no lo acabo de entender... no he probado la función todavía.
Voy a ver si puedo hacer lo que quiero en flash pasandole el html y si no tendré que seguir dandole vueltas...

Muchas gracias Cluster !
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #9 (permalink)  
Antiguo 18/02/2005, 04:06
 
Fecha de Ingreso: noviembre-2004
Mensajes: 68
Antigüedad: 19 años, 4 meses
Puntos: 0
Cita:
Iniciado por Cluster
Parece que alguien ya se dió el trabajo que mencionaba antes:



Un saludo,
me podrias dar un ejemplo de como se usa??...

ImageStringWrap($img, $font, 0, $y, $text, $color, ImageSX($img) );


$img... la entiendo
$font... no
$y... tampoco
$text.... si
$color... tambien
ImageSX($img).... tambien la entiendo

pero las otras 2 no...

porque en $y... tengo 5
y en $font... 2

pero sale error...

$img... la imagen que creas
$text.. el texto que quieres poner...
$color... el color que creas...
lo mismo de $img...

esta bien??... pero las otras no :S
  #10 (permalink)  
Antiguo 18/02/2005, 04:06
 
Fecha de Ingreso: noviembre-2004
Mensajes: 68
Antigüedad: 19 años, 4 meses
Puntos: 0
ops... no se vio el codigo... pero espero que entiendas eso
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 23:53.