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

Форум PHP

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

 

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

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

тема: Как улучшить качество уменьшаемых изображений?
 
 автор: Legenda   (06.10.2009 в 18:42)   письмо автору
 
 

Есть такой вопрос:

При загрузке изображений на сайт, есть скрипт который уменьшает изображения, создавая уменьшенные копии для превью. Но все дело в том что качество создаваемых сервером уменьшенных изображений, оставляет желать лучшего. Может кто подскажет, как улучшить качество создаваемых уменьшенных изображений?

Вот код скрипта, который создает уменьшенные копии:


function reSize($i_name,$i_size)
{
   $pref = 'min_'; // перфикс маленьких изображений
   $quality = 100; // качество изображений
   
   $img = strtolower(strrchr(basename($i_name), "."));
   $imgname = basename($i_name);
   $formats = array('.jpg', '.gif', '.png', '.bmp');
   
   if (in_array($img, $formats)){
       
       list($width, $height) = getimagesize($i_name);
       $new_height = $height * $i_size;
       $new_width = $new_height / $width;
       $thumb = imagecreatetruecolor($i_size, $new_width);
       
       switch ($img){
          
            case '.jpg': $source = @imagecreatefromjpeg($i_name); break;
            case '.gif': $source = @imagecreatefromgif($i_name); break;
            case '.png': $source = @imagecreatefrompng($i_name); break;
            case '.bmp': $source = @imagecreatefromwbmp($i_name); break;
       }
       
       imagecopyresized($thumb, $source, 0, 0, 0, 0, $i_size, $new_width, $width, $height);
       
       switch ($img){
            
            case '.jpg': imagejpeg($thumb, $pref.$imgname, $quality); break;
            case '.gif': imagegif($thumb, $pref.$imgname); break;
            case '.png': imagepng($thumb, $pref.$imgname, $quality); break;
            case '.bmp': imagewbmp($thumb, $pref.$imgname); break;
       }
       
   } else { return 'Error'; }
     
   @imagedestroy($thumb);
   @imagedestroy($source);
   
   return $imgname;
   


  Ответить  
 
 автор: Diplex   (06.10.2009 в 19:02)   письмо автору
 
   для: Legenda   (06.10.2009 в 18:42)
 

Попробуйте сменить imagecopyresized на imagecopyresampled.

  Ответить  
 
 автор: Legenda   (07.10.2009 в 10:19)   письмо автору
 
   для: Diplex   (06.10.2009 в 19:02)
 

Большое спасибо, действительно помогло!

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

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