Cómo usar la librería GD en PHP

¿Qué es la librería GD?

La librería GD se utiliza para la creación de imágenes dinámicas. Desde PHP usamos la librería GD para crear imágenes GIF, PNG o JPG instantáneamente a partir de nuestro código. Esto nos permite hacer cosas como crear gráficos sobre la marcha, crear una imagen de seguridad anti-robot, crear imágenes en miniatura, o incluso construir imágenes a partir de otras imágenes.

 

Si no está seguro de tener la librería GD, puede ejecutar phpinfo() para comprobar que el soporte de GD está habilitado. Si no lo tiene, puede descargarlo gratuitamente.

 

Este tutorial cubrirá los aspectos básicos de la creación de su primera imagen. Usted ya debe tener algunos conocimientos de PHP antes de empezar.

Rectángulo con texto

 <?php

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

$handle = ImageCreate (130, 50) or die ("Cannot Create image");

$bg_color = ImageColorAllocate ($handle, 255, 0, 0);

$txt_color = ImageColorAllocate ($handle, 0, 0, 0);

ImageString ($handle, 5, 5, 18, "PHP.About.com", $txt_color);

ImagePng ($handle);

?>

 

  1. Con este código, estamos creando una imagen PNG. En nuestra primera línea, el encabezado, establecemos el tipo de contenido. Si estuviéramos creando una imagen jpg o gif, esto cambiaría en consecuencia.
  2. A continuación, tenemos la manija de la imagen. Las dos variables en ImageCreate () son la anchura y la altura de nuestro rectángulo, en ese orden. Nuestro rectángulo tiene 130 píxeles de ancho y 50 de alto.
  3. A continuación, establecemos nuestro color de fondo. Utilizamos ImageColorAllocate () y tenemos cuatro parámetros. El primero es nuestro mango, y los tres siguientes determinan el color. Son los valores Rojo, Verde y Azul (en ese orden) y deben ser enteros entre 0 y 255. En nuestro ejemplo, hemos elegido el rojo.
  4. A continuación, elegimos nuestro color de texto, usando el mismo formato que nuestro color de fondo. Hemos elegido el negro.
  5. Ahora introducimos el texto que queremos que aparezca en nuestro gráfico usando ImageString (). El primer parámetro es el mango. Luego la fuente (1-5), comenzando con la ordenada X, comenzando con la ordenada Y, el texto en sí, y finalmente su color.
  6. Finalmente, ImagePng () crea la imagen PNG.

Jugar con las fuentes

<?php

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

$handle = ImageCreate (130, 50) or die ("Cannot Create image");

$bg_color = ImageColorAllocate ($handle, 255, 0, 0);

$txt_color = ImageColorAllocate ($handle, 0, 0, 0);

ImageTTFText ($handle, 20, 15, 30, 40, $txt_color, "/Fonts/Quel.ttf", "Quel");

ImagePng ($handle);

?>

 

Aunque la mayor parte de nuestro código ha permanecido igual, notará que ahora estamos usando ImageTTTFText () en lugar de ImageString (). Esto nos permite elegir nuestra fuente, que debe estar en formato TTF.

 

El primer parámetro es nuestro handle, luego el tamaño de la fuente, la rotación, el inicio de X, el inicio de Y, el color del texto, la fuente y, finalmente, nuestro texto. Para el parámetro de fuente, necesita incluir la ruta al archivo de fuente. Para nuestro ejemplo, hemos colocado la fuente Quel en una carpeta llamada Fuentes. Como puede ver en nuestro ejemplo, también hemos configurado el texto para que se imprima en un ángulo de 15 grados.

Si no se muestra el texto, es posible que la ruta de la fuente sea incorrecta. Otra posibilidad es que sus parámetros Rotación, X e Y estén colocando el texto fuera del área visible.

 

Dibujar líneas

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

$handle = ImageCreate (130, 50) or die ("Cannot Create image");

$bg_color = ImageColorAllocate ($handle, 255, 0, 0);

$txt_color = ImageColorAllocate ($handle, 255, 255, 255);

$line_color = ImageColorAllocate ($handle, 0, 0, 0);

ImageLine($handle, 65, 0, 130, 50, $line_color);

ImageString ($handle, 5, 5, 18, "PHP.About.com", $txt_color);

ImagePng ($handle);

?>

 

En este código, usamos ImageLine () para dibujar una línea. El primer parámetro es nuestro mango, seguido de nuestro inicio X e Y, nuestro final X e Y y, finalmente, nuestro color.

Para hacer un volcán frío como el que tenemos en nuestro ejemplo, simplemente lo ponemos en un bucle, manteniendo nuestras coordenadas iniciales iguales, pero moviéndonos a lo largo del eje x con nuestras coordenadas finales.

 

<?php

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

$handle = ImageCreate (130, 50) or die ("Cannot Create image");

$bg_color = ImageColorAllocate ($handle, 255, 0, 0);

$txt_color = ImageColorAllocate ($handle, 255, 255, 255);

$line_color = ImageColorAllocate ($handle, 0, 0, 0);

for($i=0;$i<=129;$i=$i+5)

{

ImageLine($handle, 65, 0, $i, 50, $line_color);

}

ImageString ($handle, 5, 5, 18, "PHP.About.com", $txt_color);

ImagePng ($handle);

?> ​

Dibujar una elipse

<?php

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

$handle = ImageCreate (130, 50) or die ("Cannot Create image");

$bg_color = ImageColorAllocate ($handle, 255, 0, 0);

$txt_color = ImageColorAllocate ($handle, 255, 255, 255);

$line_color = ImageColorAllocate ($handle, 0, 0, 0);

imageellipse ($handle, 65, 25, 100, 40, $line_color);

ImageString ($handle, 5, 5, 18, "PHP.About.com", $txt_color);

ImagePng ($handle);

?>

 

Los parámetros que utilizamos con Imageellipse () son el mango, las coordenadas del centro X e Y, la anchura y la altura de la elipse, y el color. Como hicimos con nuestra línea, también podemos poner nuestra elipse en un bucle para crear un efecto espiral.

 

<?php

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

$handle = ImageCreate (130, 50) or die ("Cannot Create image");

$bg_color = ImageColorAllocate ($handle, 255, 0, 0);

$txt_color = ImageColorAllocate ($handle, 255, 255, 255);

$line_color = ImageColorAllocate ($handle, 0, 0, 0);

for($i=0;$i<=130;$i=$i+10)

{

imageellipse ($handle, $i, 25, 40, 40, $line_color);

}

ImageString ($handle, 5, 5, 18, "PHP.About.com", $txt_color);

ImagePng ($handle);

?>

Si necesita crear una elipse sólida, debería utilizar Imagefilledellipse ().

 

Arcos y pasteles

<?

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

$handle = imagecreate(100, 100);

$background = imagecolorallocate($handle, 255, 255, 255);

$red = imagecolorallocate($handle, 255, 0, 0);

$green = imagecolorallocate($handle, 0, 255, 0);

$blue = imagecolorallocate($handle, 0, 0, 255);

imagefilledarc($handle, 50, 50, 100, 50, 0, 90, $red, IMG_ARC_PIE);

imagefilledarc($handle, 50, 50, 100, 50, 90, 225 , $blue, IMG_ARC_PIE);

imagefilledarc($handle, 50, 50, 100, 50, 225, 360 , $green, IMG_ARC_PIE);

imagepng($handle);

?>

 

Usando un arco lleno de imágenes podemos crear un pastel, o una rebanada. Los parámetros son: mango, centro X e Y, anchura, altura, inicio, final, color y tipo. Los puntos inicial y final están en grados, comenzando desde la posición de las 3 en punto.

Los tipos son:

 

  • IMG_ARC_PIE- Arco relleno
  • IMG_ARC_CHORD- rellenado con regla
  • IMG_ARC_NOFILL- cuando se añade como parámetro, lo hace no rellenado.
  • IMG_ARC_EDGED- Conecta con el centro. Usará esto con nofill para hacer un pastel sin relleno.

 

Podemos colocar un segundo arco debajo para crear un efecto 3D como el que se muestra en el ejemplo anterior. Sólo tenemos que añadir este código bajo los colores y antes del primer arco relleno.

 

 $darkred = imagecolorallocate($handle, 0x90, 0x00, 0x00);

$darkblue = imagecolorallocate($handle, 0, 0, 150);

// 3D look for ($i = 60; $i > 50; $i--) { imagefilledarc($handle, 50, $i, 100, 50, 0, 90, $darkred, IMG_ARC_PIE); imagefilledarc($handle, 50, $i, 100, 50, 90, 360 , $darkblue, IMG_ARC_PIE); }

 

Conclusión de lo básico

<?php

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

$handle = ImageCreate (130, 50) or die ("Cannot Create image");

$bg_color = ImageColorAllocate ($handle, 255, 0, 0);

$txt_color = ImageColorAllocate ($handle, 0, 0, 0);

ImageString ($handle, 5, 5, 18, "PHP.About.com", $txt_color);

ImageGif ($handle);

?>

Hasta ahora todas las imágenes que hemos creado han sido en formato PNG. Arriba, estamos creando un GIF usando la función ImageGif (). También cambiamos las cabeceras en consecuencia. También puede utilizar ImageJpeg () para crear un JPG, siempre y cuando los encabezados cambien para reflejarlo adecuadamente.

 

Puede llamar al archivo php como si fuera un gráfico normal. Por ejemplo:

 

 <img src="http://www.yoursite.com/YourScript.php">

(0 votes)