note 109025 deleted from function.imagecopyresampled by danbrown

From: Date: Thu, 14 Jun 2012 15:25:48 +0000
Subject: note 109025 deleted from function.imagecopyresampled by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-188612@lists.php.net to get a copy of this message
Note Submitter: tages at docsis dot ru ---- /*------------ Страница №1 ------------*/ //Определение типа "фигуры" function ImageStatus($Width, $Height) { if ($Width > $Height) return (int) 1; if ($Width < $Height) return (int) 2; if ($Width == $Height) return (int) 3; return (int) -1; } //Определение опрерации обрезания, на основании тапов "фигур" function OperationInImage($OrigiImageStatus, $NewImageStatus) { if ( ($OrigiImageStatus == 1 AND $NewImageStatus == 2) OR ($OrigiImageStatus == 1 AND $NewImageStatus == 3) OR ($OrigiImageStatus == 3 AND $NewImageStatus == 2)) return (int) 1; if ( ($OrigiImageStatus == 2 AND $NewImageStatus == 1) OR ($OrigiImageStatus == 2 AND $NewImageStatus == 3) OR ($OrigiImageStatus == 3 AND $NewImageStatus == 1)) return (int) 2; if ( ($OrigiImageStatus == 1 AND $NewImageStatus == 1) OR ($OrigiImageStatus == 2 AND $NewImageStatus == 2)) return (int) 3; return (int) -1; } //Расчет параметров длины и ширины для получения требуемого иображения function SizeCut($OrigiWidth, $OrigiHeight, $NewWidth, $NewHeight) { /* определяем фигуру оригинального изображения */ $OrigiImageStatus = ImageStatus($OrigiWidth, $OrigiHeight); /* определяем фигуру требуемого изображения */ $NewImageStatus = ImageStatus($NewWidth, $NewHeight); // определяем метод обрезания той или иной стороны и реализуем его switch (OperationInImage($OrigiImageStatus, $NewImageStatus)) { case 1: // Пропорционально $OrigiHeight =$NewHeight $OrigiWidthCut = ($OrigiHeight * $NewWidth) / $NewHeight; $OrigiHeightCut = $OrigiHeight; break; case 2: //Пропорционально $OrigiWidth =$NewWidth $OrigiHeightCut = ($OrigiWidth * $NewHeight) / $NewWidth; $OrigiWidthCut = $OrigiWidth; break; case 3: //типы фигур равны, определяем, где, что можно срезать $OrigiWidthCut = $OrigiWidth; $OrigiHeightCut = ($OrigiWidth * $NewHeight) / $NewWidth; if ($OrigiHeightCut > $OrigiHeight) { $OrigiHeightCut = $OrigiHeight; $OrigiWidthCut = ($OrigiHeight * $NewWidth) / $NewHeight; } break; default: //Прочее (квадрат), без изменений $OrigiWidthCut = $OrigiWidth; $OrigiHeightCut = $OrigiHeight; break; } return array('width' => $OrigiWidthCut, 'height' => $OrigiHeightCut); }

« previous php.notes (#188612) next »