¿
Que es el GD ?
| Bien,
el GD es una libreria para la generacion dinamica de imagenes,
al estar programada en PHP la extension sera en .php pero la trataremos
igual como si fuera una imagen a la hora de añadirla al
HTML, <img src="archivo.php">. La razon es que,
al cargar ese script, a nuestro navegador le ha de llegar una
cabecera indicando que es una imagen, y en lugar de codigo HTML
o texto, llegaran una serie de datos binarios ilegibles para nosotros,
pero que son el contenido de la imagenIgual que podemos crear
un XML HTML CSS apartir de PHP se pueden crear imagenes, antes
de empezar tenemos que tener 3 cosas claras:
.1- Paciencia, como en todo lo referente al PHP.
.2- Saber bien que tipo de header colocar en cada momento.
.3- Nivel basico de PHP. |
Mi
primer GD.
| Bien,
empezemos a crear un GD :), para ello necesitamos primero un header
para indicar que es una imagen, los headers se ponen al princpio
de todo,
indicando que tipo de imagen mostraremos, header("Content-type:
image/png") estro indica que la imagen que crearemos sera
PNG, header("Content-type: image/jpeg")
esto que sera JPEG, todo dependiendo de la configuracion de GD
en el php.
Antes,
en todos los GD, se hara lo mismo, "crear, dibujar y enviar",
luego otra opcion que es borrarla, tal vez lo de "borrar"
os a sonado un poco bruto,
pero lo que se hace al borrar es borrar la memoria que ocupo mientras
se creaba la imagen.
|
1 |
<? |
|
2 |
Header("Content-type:
image/png");
//
indicamos tipo de imagen que queremos |
|
3 |
$imagen
=
imagecreate(150,100);
//
creamos la imagen con las medidas |
|
4 |
|
|
5 |
//
definimos las cadenas de texto a mostrar |
|
6 |
$titulo="DarkSoldier.net
GD";
|
|
7 |
$Web="http://darky.nc-team.net";
|
|
8 |
$Web2="www.php.net";
|
|
9 |
$Web3="http://php_hispano.net";
|
|
10 |
|
|
11 |
//
definimos los colores |
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
//
Para hacer el fondo de color transparente |
|
17 |
//
colocamos esta funcion |
|
18 |
//
imagecolortransparent ($imagen, ,$fondo); |
|
19 |
//
con la variable de la imagen y el color de fondo
|
|
20 |
//
para hacerlo transparente |
|
21 |
|
|
22 |
|
|
23 |
//
mostramos los datos con imagestring ($imagen, n, x, y,
$variabledeltexto, $color) |
|
24 |
//
donde "n" es el tamaño de la letra |
|
25 |
//
"x" y "y" son las cordenadas y lo demas se supone ^^
|
|
26 |
|
|
27 |
|
|
28 |
|
|
29 |
|
|
30 |
|
|
31 |
|
|
32 |
|
|
33 |
//
añadimos un par de lineas para hacerlo mas bonito |
|
34 |
|
|
35 |
|
|
36 |
|
|
37 |
//
creamos la imagen |
|
38 |
Imagepng($imagen);
|
|
39 |
|
|
40 |
|
|
41 |
?>
|
| Explicacion
del codigo:
Bien
primero las etiquetas <?php ?> jeje.
Luego el header que ya a sido explicado el porque a ese
header.
Luego creamos la "variable" $imagen con la funcion
imagecreate();, que en realidad, no es solo una
variable, es un identificador usado por la libreria GD
de echo que si ponemos:
echo $imagen; no nos saldra la imagen. Por cierto, la
altura y anchura son en PIXELS.
Creamos la "variable" $fondo (igual que imagen,
es un identificador de la librearia GD) con el color que
queramos usando la funcion imagecolorallocate($variabledelaimagen,R,G,B);
donde "Red"(rojo) "Green"(Verde)
y "Blue"(Azul) son los colores primarios,
se añadiran numericamente con numeros enteros (
sin decimales ) entre el 0 y 255.
Con esto solo creamos un color, se pueden poner tantos
colores como deseemos. Esta funcion solo mete el color
de fondo ee!! imagefill($variabledelaimagen, x,
y, $color); donde "x" y "y"
son las cordeenadas.
Imagejpeg(); crea la imagen para mostrar
y la envia al navegador para que podamos verla y luego
imagedestroy(); elimina la imagen de
la memoria
como dijimos antes.
Bien, esto se podria decir que es una base, tan solo mostraria
una imagen de 200x200 (¡¡PIXELES!!)
con un fondo gris. |
|
"Rellenar un GD"
| Bien,
una imagen asi en si queda muuuy sosa, que podemos hacer?, rellenarlo,
como?, pues, con funciones tipo...:
imagerectangle($imagen,
x, y, xx, yy, $color);
Donde
"x" y "y" son las coordenadas de la parte superior
de la izquierda y "xx" y "yy" las de la parte
inferior de la derecha, lo demas ya debeis saberlo ^^
Pero esa funcion nos dibujaria un rectangulo sin relleno, como lo
rellenamos?
imagefilledrectangle($imagen,
x, y, xx, yy, $color);
Es
exactamente lo mismo pero esta funcion rellena el rectangulo jeje
Poligonos
con y sin relleno:
imagefilledpolygon($imagen,
$vertice, nº vert , $color); con relleno.
imagepolygon($imagen, $vertice, nº vert , $color); sin
relleno.
Este
es un poco mas complejo pero si se pilla el truquillo facil ^^,
para ello es necesario crear un array con los vertices,
$vertice = array(20,100,100,180,180,100,100,20);
Con esto indicamos las "esquinas" del poligono, se añaden
asi: x, y, xx, yy, xxx, yyy, etc.. indicamos el "x" y
"y" del primer vertice, el segundo y asi :)
A ver el "nº vert" es el numero de vertices que tiene
el poligono, si tiene 8 vertices ponemos 8 si tiene 10021 vertices
ponemos 10021, y asi..
Circunferencias,
arcos, elipses.
Os
preguntareis.. como este capullito pone 3 cosas que parecen dificiles
en un mismo grupo?, puest porque solo se usa una función para
todas esas figuras :O, la funcion es:
imagearc($imagen, x, y, h, v, Gi, Gf, $color);
- $imagen:
Nombre del identificador del imagecreate();
- "x"
e "y" son las cordenadas del centro.
- "h"
es la longitud del eje horizontal de la elipse.
- "v"
es la longitud del eje vertical de la elipse.
- "Gi"
punto inicial del arco (Grados sexagesimales)
- "Gf"
punto final del arco (Grados sexagesimales)
- $color:
color de la linea
Poner
de fondo una imagen ya hecha.
Pues
bien, si aparte de dibujar lineas y todo eso, queremos hacerla sobre
un fondo de una imagen ya hecha, lo primero que haremos sera definir
la imagen en una variable con la carpeta y el nombre de la imagen,
ejemplo: $imagenfondo="./imagenes/imagen1.jpg" o $imagenfondo2="./imagenes/imagen1.png"
¡¡ATENCION!!
El formato de la imagen que vamos a poner debe coincidir con la
que creamos, si creamos una imagen JPG usaremos una imagen tipo
JPG !!
Bien,
una vez definida la imagen en una variable, tan solo tendremos que
cambiar la funcion "imagecreate();" por imagecreatefromjpeg($imagenfondo);
o imagecreatefrompng($imagenfondo2);
Añadir
lineas a la imagen.
La
funcion que usaremos sera: imageline($imagen,x,y,xx,yy,$color) donde
"x" y "y" son las cordenadas de un extremo y
"xx" y "yy" son las del otro extremo, facil
no ?
Insertar
Caracteres.
Posiblemente
la funcion mas sencilla a la hora de crear una imagen dinamica,
usando: imagechar ($imagen, n, x, y, $txt, $color), en esta funcion
tan solo vemos 2 cosas nuevas, que son "n" que indica
el tamaño del texto, los numeros del tamaño son 1,2,3,4
y 5, ninguno mas, y luego $txt que es la variable que habremos asignado
previamente donde esta la cadena de texto, ejemplo(Usaremos el de
rinconastur que lo explica muy bien):
1 |
<? |
2 |
Header("Content-type:
image/png");
|
3 |
$im
=
imagecreate(150,150);
|
4 |
$t1="Tamaño
1";
|
5 |
$t2="Tamaño
2";
|
6 |
$t3="Tamaño
3";
|
7 |
$t4="Tamaño
4";
|
8 |
$t5="Tamaño
5";
|
9 |
|
10 |
$fondo=imagecolorallocate($im,
0,
0,
200);
|
11 |
$amarillo=imagecolorallocate($im,
255,
255,0);
|
12 |
|
13 |
imagechar($im,
1,
0,
0,
$t1,
$amarillo);
|
14 |
imagechar($im,
2,
20,
20,
$t2,
$amarillo);
|
15 |
imagechar($im,
3,
40,
40,
$t2,
$amarillo);
|
16 |
imagechar($im,
4,
60,
60,
$t2,
$amarillo);
|
17 |
imagechar($im,
5,
80,
80,
$t2,
$amarillo);
|
18 |
|
19 |
Imagepng($im);
|
20 |
imagedestroy($im);
|
21 |
|
22 |
?>
|
|
Bien, luego hay otra funcion imagecharup(); que es lo mismo
pero para arriba, verticalmente.
Imagestring();
Bien,
imagechar y imagecharup tan solo nos mostraba el primer caracter
de toda la cadena, pues con imagestring(); mostramos toda la cadena,
todo el texto, ademas, la funcion en si solo cambia la palabra char
por string porque el contenido de dentro viene a ser el mismo: imagestring
($imagen, n, x, y, $txt, $color); y como en imagechar en imagestring
tambien tenemos para mostrar la cadena verticalmente con la funcion
imagestringup();
En
los proximos Manuales de GD intentare poner como añadir fuentes
y tamaños aparte de los que viene con PHP auque os adelanto
que tendreis que teneri instalada la libreria FreeType sino nanai
:P. |
Gracias a...
Bien,
antes de nada, gracias a "thessoro" y a "Aeoris"
que me enseñaron a mirar manuales antes de preguntar xDD
y fue una de las razones por la cual me decidi ha hacer un manual
y demostrarles que ya no soy como antes jaja, gracias tambien
a.. oO rinconastur por su magnifico manual tan bueno y a php.net
y a google !! como no :P, en fin, espero que les guste mi primer
manual serio ^^.
PD:
Gracias a ZydRick por su PHP TO HTML para colorear el codigo y
tals ^^.
Exclusivo
para #php_para_torpes @ IRC-Hispano.org :: http://php-hispano.net
:: ^
http://darky.nc-team.net
@ DarkSoldier
|
|