PHP подправить скрипт сжатия изображений
Сейчас после сжатия картинки до превьюшки получаем такую ситуацию https://yadi.sk/i/ZYS0r7J439RWHp картинка выглядит ужасно по качеству (смотрите нижнюю) но нужно настроить скрипт сжатия, чтобы после уменьшения картинки оставалось приемлемое качество. Сам скрипт смотрите ниже:
function images_size($tmp_name, $new_name, $resolution_width, $resolution_height, $max_size){
//проверяем размер файла
$image_size = filesize($tmp_name);
$image_size = floor($image_size / '1048576') ;
if($image_size $params = getimagesize($tmp_name) ;
//проверяем ширину и высоту, нужно ли обрезание
if($params['0'] > $resolution_width || $params['1'] > $resolution_height) {
//пишем фото --------->
//получаем нужные переменные
switch ($params['2']) {
case 1: $old_img = imagecreatefromgif($tmp_name); break;
case 2: $old_img = imagecreatefromjpeg($tmp_name); break;
case 3: $old_img = imagecreatefrompng($tmp_name); break;
case 6: $old_img = imagecreatefromwbmp($tmp_name); break;
}
//вычисляем новые размеры
if($params['0'] > $params['1']) {
$size = $params['0'] ;
$resolution = $resolution_width;
}
else {
$size = $params['1'] ;
$resolution = $resolution_height;
}
$new_width = floor($params['0'] * $resolution / $size) ;
$new_height = floor($params['1'] * $resolution / $size) ;
//создаём новое изображение
$new_img = imagecreatetruecolor($new_width, $new_height) ;
imagecopyresampled ($new_img, $old_img, 0, 0, 0, 0, $new_width, $new_height, $params['0'], $params['1']) ;
//сохраняем новое изображение----->>>>>>
//определяем тип изображения
switch ($params['2']) {
case 1: $type = '.gif'; break;
case 2: $type = '.jpg'; break;
case 3: $type = '.png'; break;
case 6: $type = '.bmp'; break;
}
//Сохраняем
$new_name = "$new_name$type" ;
//echo $new_name;
switch ($type) {
case '.gif': imagegif($new_img, $new_name); break;
case '.jpg': imagejpeg($new_img, $new_name, 100); break;
case '.bmp': imagejpeg($new_img, $new_name, 100); break;
case '.png': imagepng($new_img, $new_name); break;
}
$message = ('Изображение добавлено imagedestroy($old_img);
}
//если не нужно обрезать-------------------->>>>>>>>>>>>>>>>>>>>>>>
else {
//сохраняем новое изображение----->>>>>>
//определяем тип изображения
switch ($params['2']) {
case 1: $type = '.gif'; break;
case 2: $type = '.jpg'; break;
case 3: $type = '.png'; break;
case 6: $type = '.bmp'; break;
}
//Сохраняем
$new_name = "$new_name$type" ;
copy($tmp_name, $new_name);
$message = ('Изображение добавлено }
}
else $errors = ('Слишком большой размер return($message);
return($errors);
}
') ;
') ;
') ;