Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: GDLib: плохое качество изображения на выходе
 
 автор: lElectroHardl   (21.04.2011 в 21:14)   письмо автору
 
 

Скрипт
<?
// $src - имяя оригинальной фотографии
// $dest - путь превьюшки
// $width - ширина превьюшки
// $height - высота превьюшки
function preview($src, $dest, $width, $height, $rgb = 0xFFFFFF, $quality = 100)
{
    if (!
file_exists($src)) 
        return 
false; 
    
    
$size = getimagesize($src); 
    
    if (
$size === false) 
        return 
false; 
    
    
// Определяем исходный формат по MIME-информации, предоставленной 
    // функцией getimagesize, и выбираем соответствующую формату 
    // imagecreatefrom-функцию. 
    
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
    
$icfunc = "imagecreatefrom".$format;

    if (!
function_exists($icfunc)) 
        return 
false; 
    
    
$x_ratio = $width / $size[0]; 
    
$y_ratio = $height / $size[1]; 
    
    
$ratio       = min($x_ratio, $y_ratio); 
    
$use_x_ratio = ($x_ratio == $ratio); 
    
    
$new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio); 
    
$new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio); 
    
$new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2); 
    
$new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2); 
    
    
$isrc = $icfunc($src);
    
$idest = imagecreatetruecolor($width, $height); 
    
    
imagefill($idest, 0, 0, $rgb); 
    
imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,  
    
$new_width, $new_height, $size[0], $size[1]); 

    
imagejpeg($idest, $dest, $quality);
    
    
imagedestroy($isrc); 
    
imagedestroy($idest); 
    
    return 
true;
} 
?>

Дает на выходе изображение качеством чуть ниже оригинала, почему? (делаю из фотографии 1200х900 превью 1200х900)

  Ответить  
 
 автор: cheops   (21.04.2011 в 21:44)   письмо автору
 
   для: lElectroHardl   (21.04.2011 в 21:14)
 

У GDLib алгоритмы сглаживания хуже, чему у Photoshop.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования