GD è una libreria già integrata in PHP, per essere sicuri di averla già installata nella propria versione di PHP usare phpinfo().
Supporta diversi formati di immagine, in particolare per sapere quali formati supporta la nostra versione di GD si può utilizzare la funzione gd_info(), la quale restituisce informazioni sulla versione e le funzionalità della libreria corrente installata:
Codice PHP
<?php
var_dump(gd_info());
otterremo così un output simile a questo:
array(12)
{
["GD Version"]=> string(26) "bundled (2.1.0 compatible)"
["FreeType Support"]=> bool(true)
["FreeType Linkage"]=> string(13) "with freetype"
["GIF Read Support"]=> bool(true)
["GIF Create Support"]=> bool(true)
["JPEG Support"]=> bool(true)
["PNG Support"]=> bool(true)
["WBMP Support"]=> bool(true)
["XPM Support"]=> bool(true)
["XBM Support"]=> bool(true)
["WebP Support"]=> bool(true)
["JIS-mapped Japanese Font Support"]=> bool(false)
}
in questo esempio i formati supportati sono GIF, JPEG, PNG, WBMP, XPM, XBM, WebP, poichè hanno un valore booleano uguale a true.
In questo articolo vedremo:
- come creare un'immagine ridimensionata ex nova partendo da un'immagine di grosse dimensioni e salvarla sul server remoto;
- come restituire un output di immagine ridimensionata ottenuta da un'immagine di grosse dimensioni.
Esempio 1:
Supponiamo di avere un'immagine (/images/myimage.jpg) in formato JPEG dalla quale vogliamo ottenere una miniatura (thumbnail) di dimensioni 180X60 pixel:
Codice PHP
<?php
list($width,$height)=getimagesize($_SERVER['DOCUMENT_ROOT'].'/images/myimage.jpg');
$thumbnail=imagecreatetruecolor(180,60);
$source=imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'].'/images/myimage.jpg');
imagecopyresized($thumbnail,$source,0,0,0,0,180,60,$width,$height);
imagejpeg($thumbnail,$_SERVER['DOCUMENT_ROOT']."/images/myimage_thumb.jpg",75);
la funzione list() recupera informazioni dall'immagine, le funzioni imagecreatetruecolor(), imagecreatefromjpeg(), imagecopyresized() creano un'immagine ridimensionata salvandola in memoria, imagejpeg() carica l'immagine miniatura appena creata sul server remoto, quest'ultima ha come parametri di ingresso l'immagine miniatura, il percorso in cui salvare la foto, il nome e la qualità, in particolare la qualità di un'immagine va da 1 a 100, il valore di default è 75.
Esempio 2:
Prendiamo in considerazione l'immagine in formato PNG
'/images/myimage.png'
e vogliamo un output della stessa immagine ma ridimensionata del 50% rispetto alle dimensioni attuali
Codice PHP
<?php
//File and new size
$file = $_SERVER['DOCUMENT_ROOT'].'/images/myimage.png';
$size = 0.5;
// Content type
header('Content-Type:image/png');
//Get new sizes
list($width,$height)=getimagesize($file);
$newwidth=$width*$size;
$newheight=$height*$size;
//Load
$thumb=imagecreatetruecolor($newwidth,$newheight);
$source=imagecreatefrompng($file);
//Resize
imagecopyresized($thumb,$source,0,0,0,0,$newwidth,$newheight,$width,$height);
//Output
imagepng($thumb);
$file e $size sono rispettivamente la foto e la percentuale di che vogliamo applicare all'immagine, header type é impostato come 'Content-Type: image/png', la funzione list() recupera informazioni dall'immagine originale altezza e larghezza, $newwidth e $newheight sono le nuove dimensioni scalte del 50%,