Вход Регистрация
Файл: sys/fnc/resize_crop.php
Строк: 44
<?
/**
* Масштабирование изображения
*
* Функция работает с PNG, GIF и JPEG изображениями.
* Масштабирование возможно как с указаниями одной стороны, так и двух, в процентах или пикселях.
*
* @param string Расположение исходного файла
* @param string Расположение конечного файла
* @param integer Ширина конечного файла
* @param integer Высота конечного файла
* @param bool Размеры даны в пискелях или в процентах
* @return bool
*/

function resize($file_input$file_output$w_o$h_o$percent false) {

        list(
$w_i$h_i$type) = getimagesize($file_input);

        if (!
$w_i || !$h_i) {
            echo 
'Невозможно получить длину и ширину изображения';
            return;
        }
        
$types = array('','gif','jpeg','png');
        
$ext $types[$type];
        if (
$ext) {        $func 'imagecreatefrom'.$ext;
            
$img $func($file_input);    } else {        echo 'Некорректный формат файла';
            return;    }
        if (
$percent) {        $w_o *= $w_i 100;
            
$h_o *= $h_i 100;
        }    if (!
$h_o$h_o $w_o/($w_i/$h_i);
        if (!
$w_o$w_o $h_o/($h_i/$w_i);    $img_o imagecreatetruecolor($w_o$h_o);
        
imagecopyresampled($img_o$img0000$w_o$h_o$w_i$h_i);
        if (
$type == 2) {
            return 
imagejpeg($img_o,$file_output,100);
        } else {        
$func 'image'.$ext;
            return 
$func($img_o,$file_output);    }
}

/**
* Обрезка изображения
*
* Функция работает с PNG, GIF и JPEG изображениями.
* Обрезка идёт как с указанием абсоютной длины, так и относительной (отрицательной).
*
* @param string Расположение исходного файла
* @param string Расположение конечного файла
* @param array Координаты обрезки
* @param bool Размеры даны в пискелях или в процентах
* @return bool
*/

function crop($file_input$file_output$crop 'square',$percent false) {

    list(
$w_i$h_i$type) = getimagesize($file_input);

    if (!
$w_i || !$h_i) {
        echo 
'Невозможно получить длину и ширину изображения';
        return;
    }

    
$types = array('','gif','jpeg','png');
    
$ext $types[$type];
    if (
$ext) {
        
$func 'imagecreatefrom'.$ext;
        
$img $func($file_input);
    } else {
        echo 
'Некорректный формат файла';
        return;
    }

    if (
$crop == 'square') {
        
$min $w_i;
        if (
$w_i $h_i$min $h_i;
        
$w_o $h_o $min;
    } else {

        list(
$x_o$y_o$w_o$h_o) = $crop;        if ($percent) {
            
$w_o *= $w_i 100;
            
$h_o *= $h_i 100;
            
$x_o *= $w_i 100;
            
$y_o *= $h_i 100;
        }

        if (
$w_o 0$w_o += $w_i;
        
$w_o -= $x_o;
           if (
$h_o 0$h_o += $h_i;
        
$h_o -= $y_o;
    }

    
$img_o imagecreatetruecolor($w_o$h_o);
    
imagecopy($img_o$img00$x_o$y_o$w_o$h_o);

    if (
$type == 2) {
        return 
imagejpeg($img_o,$file_output,100);
    } else {
        
$func 'image'.$ext;
        return 
$func($img_o,$file_output);
    }
}
?>
Онлайн: 0
Реклама