Foros del Web » Programando para Internet » PHP »

Como puedo hacer letras onduladas con GD??

Estas en el tema de Como puedo hacer letras onduladas con GD?? en el foro de PHP en Foros del Web. Hola gente: estoy tratando de crear una imagen con texto mediante gd, y que se parezca a una bandera flameando. no logro hacerlo mediante un ...
  #1 (permalink)  
Antiguo 13/06/2005, 15:14
Avatar de deet  
Fecha de Ingreso: mayo-2005
Ubicación: Córdoba - Argentina
Mensajes: 269
Antigüedad: 18 años, 10 meses
Puntos: 1
Como puedo hacer letras onduladas con GD??

Hola gente:

estoy tratando de crear una imagen con texto mediante gd, y que se parezca a una bandera flameando.

no logro hacerlo mediante un bucle.
  #2 (permalink)  
Antiguo 26/06/2005, 06:22
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 8 meses
Puntos: 1
Bien, pues no das muchos detalles sobre lo que tienes en mente. Podrían crearse cantidades de efectos mediante diferentes algoritmos, pero a la larga depende de lo que quieras en particular. Asimismo, no das detalles sobre el bucle que mencionas. ¿Cuál es el código que usas?

Personalmente, dado que me ha interesado la cuestión que propones, busqué en Internet algún ejemplo de código que aplique un efecto similar al que quieres para usarlo como base de un ejercicio. Eventualmente encontré un pequeño programa en C que aplica un efecto de "bandera onduleante" en 2D, y me dispuse a convertirlo a PHP, haciendo uso de las funciones de la extensión de imágenes (aquellas en base a la biblioteca GD). El resultado de mi primera aproximación a un efecto como el que propones es el siguiente:

Código PHP:
<?php

/**
 * imagen_efecto_bandera:
 * @img: El recurso de la imagen a modificar. Este parametro es pasado
 *       por referencia.
 * @intensidad: Parametro opcional. Indica la intensidad de las
 *              ondulaciones. Valores mas altos producen ondas mas
 *              pronunciadas. Su valor predeterminado es 5.
 * @angulo: Parametro opcional. Valor numerico (entre 0 y 360) que
 *          indica el angulo de inicio de las ondulaciones. Su valor
 *          predeteminado es 0.
 *
 * Modifica la imagen dada, aplicando un efecto de bandera onduleante
 * en 2D.
 *
 * Esta funcion trabaja con la extension de imagenes de PHP, la cual
 * depende de la biblioteca GD. Consulte el manual de PHP para mas
 * informacion sobre como configurar dicha extension.
 *
 * Valor de retorno: Ninguno.
 **/
function imagen_efecto_bandera (&$img$intensidad 5$angulo 0)
{
    
$altura imagesy ($img);
    
$ancho  imagesx ($img);

    
$resultado imagecreate ($ancho$altura);

    for (
$y 0$y $altura$y++) {
        
imagecopy ($resultado$img,
                   (
sin (($angulo 360) * M_PI 180) * $intensidad),
                   
$y0$y$ancho1);
        
$angulo += 5;
    }

    
imagedestroy ($img);

    
$img $resultado;
}



/*********************************************
 *                                           *
 * Ejemplo de uso de imagen_efecto_bandera() *
 *                                           *
 *********************************************/

// Texto a incluir en la imagen de ejemplo
define ('TEXTO_CADENA''Hola mundo');

// Tamanyo del texto. Dependiendo de la version de la biblioteca GD
// usada, este valor puede indicar tamanyo en puntos o pixeles
define ('TEXTO_TAM'20);

// Archivo de la fuente TTF a usar para pintar el texto. Asegurese de
// definir este valor con el nombre de un archivo valido
define ('TEXTO_FUENTE''Vera.ttf');


// Creacion de la imagen de ejemplo
$img imagecreate (240200);


// Color de fondo de la imagen y usado despues para el texto
$color_blanco imagecolorallocate($img255255255);

// Color para el fondo de la bandera
$color_fondo imagecolorallocate($img2020150);

// Pintar rectangulo
imagefilledrectangle ($img2020220180$color_fondo);

// Pintar texto
imagettftext ($imgTEXTO_TAM030110$color_blancoTEXTO_FUENTE,
              
TEXTO_CADENA);

// Aplicar el efecto
imagen_efecto_bandera ($img);

// Listo, volcar la imagen al navegador del usuario como una imagen PNG
header ('Content-type: image/png');
imagepng ($img);

imagedestroy ($img);
exit (
0);

?>
El efecto es más bien simple, pero quizás pueda servir como punto de partida para quienes busquen algo similar :).
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 07:41.