예제 #1
0
 /**
  * Вырезает максимально возможный прямоугольный в нужной пропорции
  *
  * @param LiveImage $oImage	Объект изображения
  * @param int $iW	Ширина для определения пропорции
  * @param int $iH	Высота для определения пропорции
  * @param bool $bCenter	Вырезать из центра
  * @return LiveImage
  */
 public function CropProportion(LiveImage $oImage, $iW, $iH, $bCenter = true)
 {
     if (!$oImage || $oImage->get_last_error()) {
         return false;
     }
     $iWidth = $oImage->get_image_params('width');
     $iHeight = $oImage->get_image_params('height');
     /**
      * Если высота и ширина уже в нужных пропорциях, то возвращаем изначальный вариант
      */
     $iProp = round($iW / $iH, 2);
     if (round($iWidth / $iHeight, 2) == $iProp) {
         return $oImage;
     }
     /**
      * Вырезаем прямоугольник из центра
      */
     if (round($iWidth / $iHeight, 2) <= $iProp) {
         $iNewWidth = $iWidth;
         $iNewHeight = round($iNewWidth / $iProp);
     } else {
         $iNewHeight = $iHeight;
         $iNewWidth = $iNewHeight * $iProp;
     }
     if ($bCenter) {
         $oImage->crop($iNewWidth, $iNewHeight, ($iWidth - $iNewWidth) / 2, ($iHeight - $iNewHeight) / 2);
     } else {
         $oImage->crop($iNewWidth, $iNewHeight, 0, 0);
     }
     /**
      * Возвращаем объект изображения
      */
     return $oImage;
 }
예제 #2
0
 /**
  * Вырезает максимально возможный квадрат
  *
  * @param  LiveImage $oImage
  * @return LiveImage
  */
 public function CropSquare(LiveImage $oImage)
 {
     if (!$oImage || $oImage->get_last_error()) {
         return false;
     }
     $iWidth = $oImage->get_image_params('width');
     $iHeight = $oImage->get_image_params('height');
     /**
      * Если высота и ширина совпадают, то возвращаем изначальный вариант
      */
     if ($iWidth == $iHeight) {
         return $oImage;
     }
     /**
      * Вырезаем квадрат из центра
      */
     $iNewSize = min($iWidth, $iHeight);
     $oImage->crop($iNewSize, $iNewSize, ($iWidth - $iNewSize) / 2, ($iHeight - $iNewSize) / 2);
     /**
      * Возвращаем объект изображения
      */
     return $oImage;
 }