18. Presentació de dades mitjançant imatges

Índex

 

Creació i inserció d'imatges efímeres

Un document de PHP pur pot crear una imatge efímera, que és inserida en un altre document. L'esquema bàsic és el següent:

La funció imagecreatetruecolor() crea una imatge sense contingut apta per a rebre tota mena de colors i transparències, sense limitació. La funció imagedestroy()allibera els recursos emprats en les operacions anteriors.

L'identificador introduït a la primera línia s'ha de mantenir com paràmetre en les funcions usades en la resta del programa.

A la penúltima línia, en comptes d'imagejpeg podem fer servir imagegif o imagepng; a l'avantpenúltima el paràmetre Content-type ha d'ésser coherent amb l'especificació triada.

La imatge així creada és inserida en el document portador de la mateixa manera que una imatge permanent:

 

Definir colors

Abans d'incloure elements - fons, traços... - en una imatge nova, cal especificar els colors que s'hi faran servir. Cada color rep un nom, que es farà servir després per determinar el color de cada element. La definició dels colors es realitza amb la funció imagecolorallocatealpha(), que adopta la forma següent:

Els valors r, g i b indiquen les intensitats de vermell, verd i blau i s'expressen en format decimal amb valors de 0 a 255 o amb format hexadecimal amb valors entre 0x00 i 0xFF. El valor d'alpha s'expressa amb un nombre que va del 0 (opacitat total) al 127 (transparència total).

La variant imagecolorallocate() prescindeix de l'alpha, que fixa en 0.

 

Color de fons

El color de fons s'especifica amb la funció imagefill():

El rectangle comprès entre la vora esquerra, la vora superior, x_esquerre i x_dret queda sense modificar.

Nota: les coordenades verticals tenen l'origen en la part superior, al contrari del que és habitual en matemàtiques.

 

Figures geomètriques

Hi ha una sèrie molt nombrosa de funcions que dibuixen elements geomètrics. Algunes de les més elementals són les següents:

Punt imagesetpixel(); x, y
Recta imageline(); x_inicial, y_inicial, x_final, y_final
Rectangle imagerectangle(); x_inicial, y_inicial, x_final, y_final
Rectangle ple imagefilledrectangle(); x_inicial, y_inicial, x_final, y_final
El·lipse imageellipse(); x_centre, y_centre, eix_horitzontal, eix_vertical
El·lipse plena imagefilledellipse(); x_centre, y_centre, eix_horitzontal, eix_vertical

Recordem que el quadrat és un cas particular del rectangle i la circumferència un cas particular de l'el·lipse.

En tots els casos l'ús de la funció respon al patró següent:



Vegeu-ne el resultat

 

Textos

Amb la funció imagestring() podem afegir cadenes de text a la imatge:

Les mides de lletra són 5, numerades de l'1 al 5.

El text es pot indicar mitjançant un literal o una variable.



Vegeu-ne el resultat

 

Imatges a partir de dades de formularis

La introducció de dades per l'usuari complica una mica les coses. D'una banda, un cop feta aquesta operació, hem de canviar al document portador de la imatge; de l'altra, hem de trametre les dades al document generador de la imatge. Una solució consisteix a tenir un document-pont que fa les dues comeses: converteix les dades del formulari en variables de sessió i a continuació, mitjançant un header, ens condueix al document portador de la imatge. Per la seva banda, el document generador de la imatge recull des dades de les variables de sessió.





Vegeu-ne el resultat