Вход Регистрация
Файл: 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
Реклама