Libreria GD
Da Hacknowledge.
La liberia GD è una liberia Open Source multipiattaforma che permette di operare con le immagini in PHP
Indice |
[modifica] Installazione
[modifica] Versioni
Le versioni della liberia più comuni che si trovano su internet sono la 1.6.x e la 2.x.
La 1.6.x è ancora largamente utilizzata in quanto offre il supporto per le immagini GIF che è stato eliminato nella versione 2.x in quanto il formato GIF è un formato proprietario è bisogna pagare i diritti per poterlo utilizzare, mentre la liberia GD che è Open Source vorrebbe utilizzare sempre formati aperti e modificabili da chiunque e gratuitamente.
Quindi riassumendo, le versioni precedenti fino alla 1.6.x supportano i formati GIF, JPEG e PNG ma essendo un pò datate dispongo di un numero di funzioni limitate mentre le versioni successive alla 2.x ( compresa ) supportano solo i formati JPEG e PNG ma offrono una scelta molto più ampia di funzioni per interagire con le immagini.
[modifica] Info versione installata
Per sapere quale versione si ha installato sul proprio sistema basta creare il seguente codice:
<?php var_dump(gd_info()); ?>
Si avrà una lista di valori che risponderanno alle varie caratteristiche della versione installata.
[modifica] Windows
L'installazione sotto sistemi operativi windows è relativamente semplice, il primo passo è procurarsi la liberia alla versione che si intende utilizzare e caricarla nella cartella PHP/extension. Infine bisogna "decommentare" nel file PHP.ini la riga corrispondente, nel caso ad esempio si volesse usare la 2.x:
;extension=php_fdf.dll ;extension=php_filepro.dll ;extension=php_gd.dll extension=php_gd2.dll ;extension=php_gettext.dll ;extension=php_hyperwave.dll ;extension=php_iconv.dll
Una volta eseguiti questi passaggi si dovrebbe avere tutto pronto ad essere utilizzato.
[modifica] Linux
Sotto linux è relativamente complicato se non si ha dimestichezza con il sistema, per installarle servono le Jpeg lib e le libpng.
Le libpng necessitano di zlib. Inoltre si possono usare le freetype (1 o 2) per l'utilizzo dei Font.
Una volta scaricati i vari file da shell bisogna eseguire:
# Jpeg ./configure --enable-shared --enable-static --prefix=/usr/local/jpeg; make; make test; make install
# zlib ./configure --shared --prefix=/usr/local/zlib; make; make test; make install
# libpng (zlib) make; make test; make install
# freetype2 ./configure --prefix=/usr/local/freetype2; make; make install
# GD 2 (jpeg, libpng, freetype2) './configure' \ '--prefix=/usr/local/gd2' \ '--with-zlib=/usr/local/zlib' \ '--with-png=/usr/local/libpng' \ '--with-freetype=/usr/local/freetype2' \ '--with-jpeg=/usr/local/jpeg/lib'; make; make install
Per attivarle basta aggiungere al compile:
--with-gd=dir --enable-exif --enable-gd-native-ttf --with-gd=dir --with-jpeg-dir=dir --with-png-dir=dir --with-freetype-dir=dir --with-ttf
[modifica] Uso
[modifica] Funzioni di Utily
[modifica] Ottenere singolarmente la larghezza o l'altezza dell'immagine
[modifica] imagesx()
Per ottenere la larghezza dell'immagine in pixel si può usare la funzione imagesx() che riceve un solo parametro, ovvero il percorso in cui si trova l'immagine da esaminare.
[modifica] imagesy()
Per ottenere invece l'altezza dell'immagine sempre in pixel si può usare la funzione imagesy() che riceve un'unico parametro come la funzione imagesx() cioè il percorso in cui si trova l'immagine da esaminare.
[modifica] Creare Thumbnail
Ridimensionare un immagine con la libreria GD è un operazione abbastanza semplice, i passi fondamentali sono 3:
- Ottenere le informazione dell'immagine principale ( larghezza, altezza, ecc... )
- Creazione della thumbnail
- Salvataggio della thumbnail
Iniziamo con l'ottenere le informazioni sull'immagine principale che dovremmo poi ridimensionare, lo si può fare con la funzione getimagesize() e disponendo le informazioni in una lista con la funzione list() quindi il primo passo si riassume col seguente codice:
list($larghezza, $altezza, $tipo, $attributi) = getimagesize("test.jpg");
L'immagine test.jpg dovrà stare all'interno della cartella in cui si trova il file php, altrimenti basta specificare il percorso.
Ora dobbiamo creare l'immagine ridimensionata e lo facciamo avvalendoci di tre funzioni: imagecreatetruecolor(), imagecreatefromjpeg() ( guarda QUI per alternative ) e infine imagecopyresized().
La prima ci permette di "inizializzare" le dimensioni della nuova immagine a più colori quindi possiamo usare il codice:
$thumb = imagecreatetruecolor(150, 100);
Il primo parametro rappresenza l'asse x ( larghezza ) mentre il secondo l'y ( altezza ).
Ora usiamo la seconda funzione che informa da dove verrà creata la nuova immagine:
$sorgente = imagecreatefromjpeg("test.jpg");
Infine prendiamo tutti i parametri che abbiamo recuperato fin'ora e creiamo finalmente l'immagine ridimensionata con l'ultima funzione imagecopyresized():
imagecopyresized($thumb, $sorgente, 0, 0, 0, 0, 150, 100, $larghezza, $altezza);
Il terzultimo e il quartultimo parametro sono rispettivamente le misure y e x della nuova immagine ridimensionata.
Ora non ci rimane che salvare l'immagine e lo possiamo fare con la funzione imagejpeg()' ( oppure imagepng() se la vogliamo .png, o imagegif() se si tratta di gif,imagexbm() se si tratta di xbm, imagegd() per avere una immagine gd, imagegd2() per una gd2 o infine imagewbmp() se si tratta di immagini wbmp ) e con il seguente codice:
imagejpeg($thumb, "test_thumb.jpg", 75);
Ora l'immagine è stata creata. L'ultimo parametro che influisce sul peso della nuova immagine è la qualità della nuova immagine in percentuale, in questo caso il 75% che è più che buono in rapporto qualità/peso.
[modifica] imagecreatefrom...
Le immagini da cui crearle possono essere: gd2, gd2part, gd, gif, jpeg, png, string, wbmp, xbp e xpm
Ognuna di esse accedibili tramite le funzioni:
- imagecreatefromgd2();
- imagecreatefromgd2part();
- imagecreatefromgd();
- imagecreatefromgif();
- imagecreatefromjpeg();
- imagecreatefrompng();
- imagecreatefromstring();
- imagecreatefromwbmp();
- imagecreatefromxbp();
- imagecreatefromxpm();

