File size: 2.54Kb
<?php
/*
----------------------------------------
Функция уменьшения и обрезки изображений
----------------------------------------
*/
FUNCTION CROP_IMAGE($aInitialImageFilePath, $aNewImageFilePath, $aNewImageWidth, $aNewImageHeight) {
IF (($aNewImageWidth < 0) || ($aNewImageHeight < 0)) {
RETURN FALSE;
}
//Массив с поддерживаемыми типами изображений
$lAllowedExtensions = ARRAY(1 => "gif", 2 => "jpeg", 3 => "png");
//Получаем размеры и тип изображения в виде числа
LIST($lInitialImageWidth, $lInitialImageHeight, $lImageExtensionId) = GETIMAGESIZE($aInitialImageFilePath);
IF (!ARRAY_KEY_EXISTS($lImageExtensionId, $lAllowedExtensions)) {
RETURN FALSE;
}
$lImageExtension = $lAllowedExtensions[$lImageExtensionId];
//Получаем название функции, соответствующую типу, для создания изображения
$func = 'imagecreatefrom' . $lImageExtension;
//Создаём дескриптор исходного изображения
$lInitialImageDescriptor = $func($aInitialImageFilePath);
//Определяем отображаемую область
$lCroppedImageWidth = 0;
$lCroppedImageHeight = 0;
$lInitialImageCroppingX = 0;
$lInitialImageCroppingY = 0;
IF ($aNewImageWidth / $aNewImageHeight > $lInitialImageWidth / $lInitialImageHeight) {
$lCroppedImageWidth = FLOOR($lInitialImageWidth);
$lCroppedImageHeight = FLOOR($lInitialImageWidth * $aNewImageHeight / $aNewImageWidth);
$lInitialImageCroppingY = FLOOR(($lInitialImageHeight - $lCroppedImageHeight) / 2);
}ELSE{
$lCroppedImageWidth = FLOOR($lInitialImageHeight * $aNewImageWidth / $aNewImageHeight);
$lCroppedImageHeight = FLOOR($lInitialImageHeight);
$lInitialImageCroppingX = FLOOR(($lInitialImageWidth - $lCroppedImageWidth) / 2);
}
//Создаём дескриптор для выходного изображения
$lNewImageDescriptor = imagecreatetruecolor($aNewImageWidth, $aNewImageHeight);
imagecopyresampled($lNewImageDescriptor, $lInitialImageDescriptor, 0, 0, $lInitialImageCroppingX, $lInitialImageCroppingY,
$aNewImageWidth, $aNewImageHeight, $lCroppedImageWidth, $lCroppedImageHeight);
$func = 'image' . $lImageExtension;
//сохраняем полученное изображение в указанный файл
RETURN $func($lNewImageDescriptor, $aNewImageFilePath);
}
?>