Создание уменьшенной копии изображения

<?php
 /**
  * @param  string  $sSrcname  Файл исходного изображения
  * @param  string  $sDstName  Файл уменьшенной копии
  * @param  int     $iDstW     Максимальная ширина копии
  * @param  int     $iDstH     Максимальная высота копии
  */
 function CreateThumbnail($sSrcName, $sDstName, $iDstW, $iDstH)
 {
     // Получим информацию о исходном изображении
     $aImgInfo = <a href="http://www.php.net/getimagesize">getImageSize</a>($sSrcName);
     // Определим тип
     switch ($aImgInfo[2])
     {
         case IMAGETYPE_JPEG:
             $sType = 'jpeg';
         break;
         case IMAGETYPE_PNG:
             $sType = 'png';
         break;
         case IMAGETYPE_GIF:
             $sType = 'gif';
         break;
         default:
             // Если тип нам не нравится, шлем нафиг
             return false;
         break;
     }
     if (!function_exists('imagecreatefrom' . $sType))
     {
         return false;
     }
     // Исходное изображение
     $imgSrc = call_user_func('imagecreatefrom' . $sType, $sSrcName);
     // Теперь $iSrcW и $iSrcH ширина и высота исходника
     list($iSrcW, $iSrcH) = $aImgInfo;
     // Далее алгоритм определения пропорции
     if (($iSrcW &gt; $iDstW) || ($iSrcH &gt; $iDstH))
     {
         if ($iSrcW &gt; $iSrcH)
         {
             $fK = $iDstW / $iSrcW;
         }
         else
         {
             $fK = $iDstH / $iSrcH;
         }
     }
     else
     {
         $fK = 1;
     }
     $iNewW = <a href="http://www.php.net/round">round</a>($iSrcW * $fK); // Ширина копии
     $iNewH = <a href="http://www.php.net/round">round</a>($iSrcH * $fK); // Высота копии
     // Создаем уменьшенную копию
     $imgDst = imagecreatetruecolor($iNewW, $iNewH);
     ImageCopyResampled($imgDst, $imgSrc, 0, 0, 0, 0, $iNewW, $iNewH, $iSrcW,
         $iSrcH); // Изменяем размер пропорционально со сглаживанием
     // Сохраняем в $sDstName
     call_user_func_array('image' . $sType, <a href="http://www.php.net/array">array</a>($imgDst, $sDstName));
     return true;
 }
?>