In questo articolo vedremo come ridimensionare un'immagine in modo proporzionale con PHP.
La soluzione รจ la seguente:
function resize_image($image_path, $max_width, $max_height) {
// Verifichiamo che il file esista
if(!file_exists($image_path) || !is_readable($image_path)) {
return false;
}
// Accettiamo solo immagini JPEG e PNG
$type = exif_imagetype($image_path);
if($type !== IMAGETYPE_JPEG && $type !== IMAGETYPE_PNG) {
return false;
}
// Creiamo un'immagine a partire dal file
$image = imagecreatefromstring(file_get_contents($image_path));
$width = imagesx($image);
$height = imagesy($image);
// Calcoliamo le proporzioni dell'immagine
$ratio = min($max_width/$width, $max_height/$height);
$new_width = $ratio * $width;
$new_height = $ratio * $height;
// Creiamo un'immagine vuota con le nuove dimensioni
$new_image = imagecreatetruecolor($new_width, $new_height);
// Ridimensioniamo l'immagine originale
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// Salviamo l'immagine ridimensionata
if($type == IMAGETYPE_JPEG) {
imagejpeg($new_image, $image_path);
} else {
imagepng($new_image, $image_path);
}
imagedestroy($image);
imagedestroy($new_image);
return true;
}