PHPで画像を比例リサイズする方法


  1. GDライブラリを使用する方法: GDライブラリは、PHPで画像処理を行うための一般的なライブラリです。以下のコード例では、GDライブラリを使用して画像を比例リサイズします。
function resizeImage($sourcePath, $destinationPath, $maxWidth, $maxHeight) {
    // オリジナル画像のサイズを取得
    list($width, $height) = getimagesize($sourcePath);
    // 比率を計算
    $ratio = min($maxWidth / $width, $maxHeight / $height);
    // リサイズ後のサイズを計算
    $newWidth = $width * $ratio;
    $newHeight = $height * $ratio;
    // GDライブラリを使用して画像をリサイズ
    $image = imagecreatefromjpeg($sourcePath);
    $resizedImage = imagecreatetruecolor($newWidth, $newHeight);
    imagecopyresampled($resizedImage, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
    imagejpeg($resizedImage, $destinationPath, 90);
    // メモリを解放
    imagedestroy($image);
    imagedestroy($resizedImage);
}
// 例: 画像を最大幅400ピクセル、最大高さ300ピクセルで比例リサイズする
$sourcePath = 'path/to/original/image.jpg';
$destinationPath = 'path/to/resized/image.jpg';
$maxWidth = 400;
$maxHeight = 300;
resizeImage($sourcePath, $destinationPath, $maxWidth, $maxHeight);
  1. Imagickライブラリを使用する方法: ImagickライブラリもPHPで画像処理を行うための人気のあるライブラリです。以下のコード例では、Imagickライブラリを使用して画像を比例リサイズします。
function resizeImage($sourcePath, $destinationPath, $maxWidth, $maxHeight) {
    // Imagicオブジェクトを作成
    $image = new Imagick($sourcePath);
    // オリジナル画像のサイズを取得
    $width = $image->getImageWidth();
    $height = $image->getImageHeight();
    // 比率を計算
    $ratio = min($maxWidth / $width, $maxHeight / $height);
    // リサイズ後のサイズを計算
    $newWidth = $width * $ratio;
    $newHeight = $height * $ratio;
    // 画像をリサイズ
    $image->resizeImage($newWidth, $newHeight, Imagick::FILTER_LANCZOS, 1);
    // リサイズ後の画像を保存
    $image->writeImage($destinationPath);
    // メモリを解放
    $image->destroy();
}
// 例: 画像を最大幅400ピクセル、最大高さ300ピクセルで比例リサイズする
$sourcePath = 'path/to/original/image.jpg';
$destinationPath = 'path/to/resized/image.jpg';
$maxWidth = 400;
$maxHeight = 300;
resizeImage($sourcePath, $destinationPath, $maxWidth, $maxHeight);

以上がPHPで画像を比例リサイズするための基本的な方法です。GDライブラリとImagickライブラリの両方を使用することができますが、環境によってはGDライブラリが利用できない場合もあるため、適切なライブラリを選択してください。また、コード例ではJPEG形式の画像を前提としていますが、他の形式の画像もリサイズできるように、適宜コードを変更してください。