martes, 7 de octubre de 2014

Las formas en PHP



Las funciones de la librería GD dibujan formas como círculos, rectángulos, polígonos, etc.

A continuación mostramos algunas funciones con $recurso de una imagen que se ha creado anteriormente:
  • imagesetpixel($recurso, $x, $y, $color): píxel del color $color en las coordenadas $x,$y.
  • imageline($recurso, $x1, $y1, $x2, $y2, $color): línea de color $color entre las coordenadas $x1,$y1 y las coordenadas $x2,$y2.
  • imagefill($recurso, $x, $y, $color): rectángulo desde las coordenadas $x,$y hasta el ángulo inferior derecho del recurso rellenado con el color $color.
  • imagerectangle($recurso, $x1, $y1, $x2, $y2, $color): rectángulo de contorno que tiene el color $color entre las coordenadas $x1,$y1 y las coordenadas $x2,$y2.
  • imagefilledrectangle($recurso, $x1, $y1, $x2, $y2, $color): rectángulo con el fondo que tiene el color $color entre las coordenadas $x1,$y1 y las coordenadas $x2,$y2.
  • imageellipse($recurso, $x, $y, $ancho, $alto, $color): elipse con coordenadas del centro $x y $y, de ancho $ancho, de alto $alto y el contorno con el color $color.
  • imagefilledellipse($recurso,$x, $y, $ancho, $alto, $color): elipse con coordenadas del centro $x y $y, de ancho $ancho, de alto $alto y cuyo fondo tiene el color $color.
  • imagepolygon($recurso, $registro_puntos, $numero_puntos, $color): polígono con un número de puntos igual a $numero_puntos, donde las coordenadas de estos puntos se ubican en el registro $registro_puntos y cuyo contorno tiene el color $color.
  • imageflip($recurso, $modo): devuelve la imagen con el modo suministrado. Los valores del modo son:


IMG_FLIP_HORIZONTAL: devuelve la imagen horizontalmente.

IMG_FLIP_VERTICAL: devuelve la imagen verticalmente.

IMG_FLIP_BOTH: devuelve la imagen horizontal y verticalmente.

Esta función sólo existe desde PHP 5.5.

Por ejemplo:

<?php
header("Content-type: image/png");
$recurso = imagecreate(300,150);
$blanco = imagecolorallocate($recurso, 255, 255, 255);
$negro = imagecolorallocate($recurso, 0, 0, 0);
//registro de 3 puntos con sus coordenadas x e y
$registro_puntos = array(20, 30, 160, 70, 110, 150);
//creación del polígono de 3 puntos en negro.
imagepolygon($recurso, $registro_puntos, 3, $negro);
//mostrar la imagen
imagepng($recurso);
imagedestroy($recurso);
?>

Y muestra, sin las coordenadas, lo siguiente:


  • imagefilledpolygon($recurso, $registro_puntos, $numero_puntos, $color): polígono con un número de puntos igual a $numero_puntos, donde las coordenadas de estos puntos se ubican en el registro $registro_puntos y cuyo fondo tiene el color $color.
  • imagesetthickness($recurso, $grosor): aumenta el grosor de la línea un número de píxeles igual a $grosor.

Existen numerosas funciones en esta librería, que se explica en este enlace: 

http://www.php.net/manual/es/ref.image.php


Ejemplos

1. Ejemplo 1

Un ejemplo común consiste en mostrar un gráfico que representa el número de visitas diarias a un sitio Web. Estos datos pueden proceder de una base de datos MySQL, pero se indican de forma fija en el ejemplo.

<?php
header("Content-type: image/png");
$registro_visitas = array(520, 458, 642, 741, 254, 657, 356, 912, 259, 712);
$anchoImagen = 450;
$altoImagen = 400;
$imagen = imagecreate($anchoImagen, $altoImagen);
$blanco = imagecolorallocate($imagen, 255, 255, 255);
$negro = imagecolorallocate($imagen, 0, 0, 0);
$rojo = imagecolorallocate($imagen, 255, 0, 0);
// trazo horizontal para representar el eje de los días
imageline($imagen, 10, $altoImagen-10, $anchoImagen-10,
$altoImagen-10, $negro);
// Mostrar el número de días
for ($dia=1; $dia<=10; $dia++) {
imagestring($imagen, 0, $dia*40, $altoImagen-10, $dia, $negro);
}
// trazo vertical que representa el número de visitas
imageline($imagen, 10, 10, 10, $altoImagen-10, $negro);
// el número máximo de visitas proporcional a lo alto de la imagen
$visitas_maximas = 1000;
// trazado de rectángulos
for ($dia=1; $dia<=10; $dia++) {
$altoRectangulo = round(($registro_visitas[$dia-1]*$altoImagen)
/$visitas_maximas);
imagefilledrectangle($imagen, $dia*40-6, $altoImagen-
$altoRectangulo, $dia*40+8, $altoImagen-10, $rojo);
imagestring($imagen, 0, $dia*40-6, $altoImagen-$altoRectangulo-10,
$registro_visitas[$dia-1], $negro);
}
imagePng($imagen);
imagedestroy($imagen);
?>

Da como resultado:



2. Ejemplo 2

En este ejemplo se utiliza la función imagerotate() para rotar la imagen y cambiar el color de fondo:

<?php
header(’Content-type: image/gif’);
$imagen = imagecreate(130, 130);
$blanco = imagecolorallocate($imagen, 255, 255, 255);
$azul = imagecolorallocate($imagen, 0, 0, 255);
//rotación de la imagen de 45° y fondo en azul
$imagen = imagerotate($imagen, 45, $azul);
imagegif($imagen);
imagedestroy($imagen);
?>

Da como resultado:




Espero haber ayudado en algo. Hasta la próxima oportunidad!








No hay comentarios:

Publicar un comentario en la entrada