Spesso nel progettare un’applicazione web si ha la necessità di effettuare l’upload di una o più immagini. Tuttavia difficilmente le immagini possono essere inserite nelle loro dimensioni naturali, e bisogna procedere alla creazione delle cosiddette miniature, in inglese “thumbnails”.
Per upload occasionali possiamo ricorrere al nostro fido programma di grafica ed effettuare manualmente il ridimensionamento dell’immagine. Tuttavia, se l’upload delle immagini dev’essere sistematico (ad esempio nel caso di una photogallery, o di un sistema di gestione degli articoli dove giornalmente si ha la necessità di caricare foto), sarà bene inserire nel proprio script PHP una procedura per automatizzare la creazione delle miniature.

Vediamo quindi un semplice script per effettuare tale operazione:


//funzione per rilevare l’estensione del file

function exFile($nome_file) {
$pos = @strrpos($nome_file, ‘.’);
if($pos==false) {
return false;
} else {
return @substr($nome_file, $pos);
}
}

//funzione per creare la miniatura
function crea_miniatura ($pic_normale) {

//aggiunge “_th” al nome file per la thumbnail
$pic_thumb = str_replace(exFile($pic_normale), “_th”.exFile($pic_normale), $pic_normale);

//dimensioni desiderate per la miniatura, sostituire con un valore in pixel a propria scelta
$thumb_size = 80;
$size = getimagesize($pic_normale);
$width = $size[0];
$height = $size[1];

if($width> $height) {
$x = ceil(($width - $height) / 2 );
$width = $height;
} elseif($height> $width) {
$y = ceil(($height - $width) / 2);
$height = $width;
}
$new_im = ImageCreatetruecolor($thumb_size,$thumb_size);
$im = imagecreatefromjpeg($pic_normale);
imagecopyresampled($new_im, $im, 0, 0, $x, $y, $thumb_size, $thumb_size, $width, $height);
imagejpeg($new_im, (”miniature/”.$pic_thumb),100);
}

Questa funzione PHP crea una miniatura di 80×80 pixel e la salva nella sottocartella “miniature”, aggiungendo il suffisso “_th” al file.
E’ sufficiente copiare la funzione nel proprio script e richiamarla tramite questa sintassi:

<?php crea_miniature(”immagine.jpg”); ?>

E’ possibile migliorare lo script aggiungendo nuove funzionalità e controlli.
Qualche suggerimento: verifica del tipo o delle dimensioni del file, inserimento automatico in un database del file appena uploadato, aggiunta di un suffisso composto da data e ora per evitare duplicati dei file, oppure un controllo per verificare se il file sia già esistente sul server.
Vedremo nei prossimi tutorial alcuni di questi casi.



Altri articoli che potrebbero interessarti