PHP: ridimensionare un'immagine in modo proporzionale

PHP: ridimensionare un'immagine in modo proporzionale

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;
}               

Torna su