Файл: system/resize.php
Строк: 58
<?
if (isset($_GET['img'], $_GET['width'], $_GET['height']) && $_GET['width'] && $_GET['width'] > 0 && $_GET['width'] < 1024 && $_GET['height'] < 1024) {
$file = htmlentities($_GET['img']);
$ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
if ($ext == 'gif' || $ext == 'jpeg' || $ext == 'jpg' || $ext == 'png') {
if (!file_exists($file)) exit('Такого файла нет');
$newwidth = $_GET['width']; ///Новая ширина фото
$newheight = $_GET['height']; ///Новая высота фото
///проверяем включено ли точное масштабирование
if(isset($_GET['fix']) && $_GET['fix']==1)$fix=1;else$fix=0;
$type = 'png'; ///В каком формате выводить
if(isset($_GET['i']) && $_GET['i']>=0 && $_GET['i']<=100 and $ext != 'png')$i=intval($_GET['i']); else $i=100; ////////Сжатие изображения (100-без сжатия) у jpg(jpeg)
if(isset($_GET['i']) && $_GET['i']>=0 && $_GET['i']<=9 and $ext != 'png')$i=intval($_GET['i']); else $i=7; ////////Сжатие изображения (9-без сжатия) у png
$info = getimagesize($file); ///Берём данные о файле
if($info[0]<$newwidth or $info[1]<$newheight){
$newwidth=$info[0];
$newheight=$info[1];
}
// Тип
switch($type){
case 'gif': header("content-type: image/gif"); break;
case 'jpg': header("content-type: image/jpeg"); break;
case 'jpeg': header("content-type: image/jpeg"); break;
case 'png': header("content-type: image/png"); break;
default: header("content-type: image/png"); break;
}
// Урезаем
if($fix==0){
list($width_orig, $height_orig) = getimagesize($file);
if(isset($_GET['height']) && $_GET['height']==0){
if ($width && ($width_orig < $height_orig)) {
$width = ($height / $height_orig) * $width_orig;
} else {
$height = ($width / $width_orig) * $height_orig;
}
}else{
$width=$newwidth;
$koe=$info[0]/$width;
$height=ceil($info[1]/$koe);
}
}else{
list($width_orig, $height_orig) = getimagesize($file);
if(isset($_GET['height']) && $_GET['height']==0){
if ($width && ($width_orig < $height_orig)) {
$width = ($height / $height_orig) * $width_orig;
} else {
$height = ($width / $width_orig) * $height_orig;
}
}else{
$width=$newwidth;
$height=$newheight;
}
}
$image_p = imagecreatetruecolor($width, $height);
imagealphablending($image_p, false);
imagesavealpha($image_p, true);
switch ($info['mime']) {
case 'image/png': $image = imagecreatefromPNG($file); break;
case 'image/gif': $image = imagecreatefromGIF($file); break;
case 'image/jpeg': $image = imagecreatefromJPEG($file); break;
default: $image = 'Формат не поддерживается'; break;
}
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
// Выводим
switch($type){
case 'gif': imagegif($image_p, null); break;
case 'jpg': imagejpeg($image_p, null, $i); break;
case 'jpeg': imagejpeg($image_p, null, $i); break;
case 'png': imagepng($image_p, null, $i); break;
default: header("content-type: image/png"); break;
}
imagedestroy($image_p);
} else header('Location: /index.php');
} else header('Location: /index.php');
?>