In queto veloce articolo vi riporto una funzione che utilizzo sul mio sito https://www.fotoarts.it per creare le thumbnail delle immagini che gli utenti caricano.
function createThumbnail($sourcePath, $destinationPath, $maxSize = 400) {
// La funzione list in PHP viene utilizzata per assegnare valori a un elenco di variabili in un'unica operazione.
list($width, $height, $type) = getimagesize($sourcePath); // getimagesize in PHP viene utilizzata per ottenere le dimensioni e il tipo
// Calcolare le nuove dimensioni
if ($width > $height) {
$newWidth = $maxSize;
$newHeight = ($maxSize / $width) * $height;
} else {
$newWidth = ($maxSize / $height) * $width;
$newHeight = $maxSize;
}
// Creare l'immagine thumbnail
$thumb = imagecreatetruecolor($newWidth, $newHeight);
// Caricare l'immagine originale
if ($type == IMAGETYPE_JPEG) {
$source = imagecreatefromjpeg($sourcePath);
} elseif ($type == IMAGETYPE_PNG) {
$source = imagecreatefrompng($sourcePath);
} else {
// Aggiungere altri formati supportati se necessario
return false;
}
// Ridimensionare l'immagine originale alla dimensione della thumbnail
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
// Salvare l'immagine thumbnail nel formato desiderato
if ($type == IMAGETYPE_JPEG) {
imagejpeg($thumb, $destinationPath, 90); // L'ultimo parametro è la qualità dell'immagine JPEG (da 0 a 100)
} elseif ($type == IMAGETYPE_PNG) {
imagepng($thumb, $destinationPath, 9); // L'ultimo parametro è la qualità dell'immagine PNG (da 0 a 9)
}
// Liberare le risorse
imagedestroy($thumb);
imagedestroy($source);
return true;
}
// Utilizzo dell'esempio
$sourceImage = 'percorso/immagine_originale.jpg';
$destinationImage = 'percorso/thumbnail.jpg';
if (createThumbnail($sourceImage, $destinationImage)) {
echo 'Thumbnail creato con successo!';
} else {
echo 'Errore nella creazione del thumbnail.';
}
Come potete vedere è una funzione molto semplice, nei commenti sono spiegate tutte le funzioni e particolarità.