ubiquitour.com

Cómo dibujar un corazón con PHP GD

El lenguaje de programación, preprocesador de hipertexto (PHP) cuenta con una biblioteca de gráficos llamada dibujar gráficos (GD). GD permite crear dinámicamente imágenes según las diferentes circunstancias, tales como gráficos que siempre se actualizan o marcas de agua en las imágenes subidas por el usuario. Si desea dibujar un corazón o cualquier otra forma, afilar sus habilidades para crear cualquier tipo de imagen que quieres ampliará las posibilidades de lo que puede hacer con la biblioteca GD.

Instrucciones

1 Abra un editor de texto que no texto enriquecido formato, como el Bloc de notas y escriba la etiqueta PHP de apertura: <? php.

2 Escribir una función de Bézier para dibujar curvas. La librería GD de función no incluye esta función, hasta crear los suyos propios (ver recursos). La siguiente función utiliza la función GD "imagesetpixel", que establece un píxel en las coordenadas especificadas por los parámetros segundo y terceros. El cuarto parámetro especifica el color y, como con la mayoría de las funciones de la GD, el primer parámetro es un identificador de imagen.

función bezier (& $img, $x, $y, $color, $res) {}

$cx = 3 * ($x [1] - $x[0]);

$bx = 3 * ($x [2] - $x[1]) - $cx;

$ax = $x [3] - $x [0] - $cx - $bx;

$cy = 3 * ($y [1] - $y[0]);

$by = 3 * ($y [2] - $y[1]) - $cy;

$ay = $y [3] - $y [0] - $cy - $by;

para ($i = 0; $i < = $res; $i ++) {}

$t = $i / $res;

$xt = $axpow ($t, 3) + $bxpow ($t, 2) + $cx * $t + $x [0];

$yt = $aypow ($t, 3) + $bypow ($t, 2) + $cy * $t + $y [0];

imagesetpixel ($img, round($xt),round($yt), $color);

}

}

3 Inicializar la imagen y los colores que usted necesita. En el código de ejemplo siguiente, la imagen se inicializa para 200 por 200 píxeles, usando la función "imagecreate", que también crea el identificador de la imagen "$img." Los colores rojo y blanco se inicializan con la función "imagecolorallocate" especificando los valores de 0 a 255 para rojo, verde y azul. El primer color inicializado se convertirá en el color de fondo.

$img = imagecreate (200, 200);

$white = imagecolorallocate ($img, 255, 255, 255);

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

4 Crear dos matrices para las coordenadas x e y-de los cuatro puntos que determinarán la forma de la curva de Bézier. Para especificar la forma de la curva, pensar en términos de dos vectores tangentes, cuya magnitud determina la cantidad de influencia que tiene la dirección del vector sobre la curva, al igual que la trayectoria de una bola cae en un fuerte viento. El primero de los cuatro puntos especifica uno de los extremos de la curva y la cola del primer vector, y el segundo especifica la cabeza del vector. La distancia entre los puntos corresponde a la magnitud y la dirección determina su posición relativa. El tercer punto es la cabeza del segundo vector y el cuarto punto es la cola del vector y el otro extremo.

En el ejemplo siguiente, los cuatro puntos son (100, 40), (150, -10), (250, 80) y (100, 180), donde es la esquina superior izquierda de la imagen (0, 0). Las coordenadas x de los puntos finales son ambos 100, que los centros en la tela de izquierda a derecha. Las coordenadas y indican que el primer punto final a los 40 está por encima de la otra en 180. Las cabezas de los vectores están por encima y a la derecha de sus respectivos extremos. Separar las coordenadas x y y en sus propios arreglos de discos:

$x_coords = array (100, 150, 250, 100);

$y_coords = array (40 -10, 80, 180);

5 Dibujar la curva con la función de Bézier que creó en el paso 2. En la función de ejemplo, el primer parámetro es el identificador de la imagen; los siguientes dos parámetros son los arreglos de discos para las coordenadas x y y; la cuarta es el color; y la última es la resolución. El parámetro de resolución determina el número de puntos a trazar, para especificar un número mayor de curvas bien definidas. Por ejemplo, escriba:

Bézier ($img, $x_coords, $y_coords, $red, 500);

6 Redefinir las coordenadas para dibujar la curva en el lado izquierdo del corazón y la parcela con la función de Bézier. Los extremos de la curva de la izquierda son los mismos que para el derecho. Lo único que cambia es las coordenadas x de las cabezas de los vectores. Los nuevos tienen que ser tanto a la izquierda del centro como la anterior estaban a la derecha del centro en orden para cada lado como una imagen especular de la otra. Por ejemplo, escriba:

$x_coords [1] = 50; / / primera cabeza vector era 150.

$x_coords [2] = -50; / / segunda cabeza vector era 250.

Bézier ($img, $x_coords, $y_coords, $red, 500);

7 Mostrar la imagen y destruir el objeto image para liberar la memoria. La función "header" es necesaria para que el navegador tratará la salida como una imagen. El fichero termina con el cierre la etiqueta PHP. Por ejemplo, escriba:

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

imagepng($IMG);

imagedestroy($IMG);

? >