PHPで画像を取り扱う

画像サイズを取得

$array = getimagesize("img/aaa.jpg");

// 幅
$width = $array[0];

// 高さ
$height = $array[1];

画像を縮小してバイナリデータを取得

$max_width  = 120; // 最大幅
$max_height = 160; // 最大高さ

$img = $_FILES["jpg_source"]["tmp_name"];
$arrImg = getimagesize($img);
$old_width  = $arrImg[0]; // 幅
$old_height = $arrImg[1]; // 高さ

if ($old_width > $max_width || $old_height > $max_height) {

    // 幅が最大幅を超えている場合
    if ($old_width > $max_width) {
        $new_width = $max_width;
        // 係数
        $coefficient = $max_width / $old_width;
        $new_height = $old_height * $coefficient;
        $new_height = floor($new_height);
    } else {
        $new_width = $old_width;
        $new_height = $old_height;
    }

    // 高さが最大高さを超えている場合
    if ($new_height > $max_height) {
        $new_height = $max_height;
        $coefficient = $max_height / $old_height;
        $new_width = $old_width * $coefficient;
        $new_width = floor($new_width);
    }

    $src_im = ImageCreateFromJPEG($img);
    $dst_im = imagecreatetruecolor($new_width,$new_height);
    ImageCopyResampled($dst_im,$src_im,0,0,0,0,$new_width,$new_height,$old_width,$old_height);

    // バイナリデータを取得
    ob_start();
    ImageJPEG($dst_im);
    $binary_data = ob_get_contents();
    ob_end_clean();

    unset($src_im,$dst_im);

} else {

    // バイナリデータを取得
    $fp = fopen($img, 'rb');
    $binary_data = fread($fp, filesize($img));
    $new_width  = $old_width;
    $new_height = $old_height;

}