помогите с обработкой изображения (скрипт)

artcity

Новичок
в общем есть скрипт, который создает миниатюру плюсом к уже загруженной фотке...

он создает её с разрешение 320х240.. как сделать так чтобы он создавал превьюшку в той же пропорции что и оригинал, но в пределах 320х240.... то есть это максимальные параметры, но пропорцию нужно сохранить.

вот скрипт:

PHP:
$file_name= "АДРЕС ФАЙЛА";  //  сохраняем имя файла в переменную

  //  Создаем миниатюры

   $nw = 320;    // Ширина миниатюр
   $nh = 240;    // Высота миниатюр
   
   $source = "$file_name";       // Исходный файл 
   $dest = "../proj_min/"."$file_name";   // Файл с результатом работы
   
	$stype = explode(".", $source);
	$stype = $stype[count($stype)-1];
   
   $size = getimagesize($source);
	$w = $size[0];    // Ширина изображения 
	$h = $size[1];    // Высота изображения

switch($stype) {
    case 'gif':
    $simg = imagecreatefromgif($source);
    break;
    case 'jpg':
    $simg = imagecreatefromjpeg($source);
    break;
    case 'png':
    $simg = imagecreatefrompng($source);
    break;
}

$dimg = imagecreatetruecolor($nw, $nh);
$wm = $w/$nw;
$hm = $h/$nh;
$h_height = $nh/2;
$w_height = $nw/2;
  
if($w > $h) {
    $adjusted_width = $w / $hm;
    $half_width = $adjusted_width / 2;
    $int_width = $half_width - $w_height;
    imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);
} elseif(($w < $h) || ($w == $h)) {     
        $adjusted_height = $h / $wm;
        $half_height = $adjusted_height / 2;
        $int_height = $half_height - $h_height;
        imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);
     } else {     
        imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h); 
     }     
imagejpeg($dimg,$dest,100);
 

С.

Продвинутый новичок
Составить числовую пропорцию 320/240=320/х и решить ее -- школьная программа 5-го класса.
 

radioheaded

PHP нуб
Я бы посоветовал использовать ImageMagick и Imagick, там есть scale с параметром bestfit, который в точности решает вашу задачу.
 
Сверху