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

Форум PHP

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

 

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

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

тема: как увеличить качество уменьшаемой и обрезаемой картинки?
 
 автор: Bvz   (03.07.2010 в 20:48)   письмо автору
 
 

уменьшаю картинку вот такой функцией:
function resizeimgW($filename, $smallimage, $w, $h)
  {
    // Имя файла с масштабируемым изображением
    $filename = $filename;
    // Имя файла с уменьшенной копией.
    $smallimage = $smallimage;
    // определим коэффициент сжатия изображения, которое будем генерить
    $ratio = $w/$h;
    // получим размеры исходного изображения
    $size_img = getimagesize($filename);
    // получим коэффициент сжатия исходного изображения
    $src_ratio=$size_img[0]/$size_img[1];
    // Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились
    // пропорции исходного изображения
    if ($ratio>$src_ratio)
            {
              $h = $w/$src_ratio;
            }
    else
            {
              $w = $h*$src_ratio;
            }
    // создадим пустое изображение по заданным размерам
    $dest_img = imagecreatetruecolor($w, $h);
    // создаем jpeg из файла
    $src_img = imagecreatefromjpeg($filename);
    // масштабируем изображение     функцией imagecopyresampled()
    // $dest_img - уменьшенная копия
    // $src_img - исходной изображение
    // $w - ширина уменьшенной копии
    // $h - высота уменьшенной копии
    // $size_img[0] - ширина исходного изображения
    // $size_img[1] - высота исходного изображения
    imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
    // сохраняем уменьшенную копию в файл
    imagejpeg($dest_img, $smallimage);
    // чистим память от созданных изображений
    imagedestroy($dest_img);
    imagedestroy($src_img);
    return true;
  }


потом вырезаю середину вот такой функцией:

/**
/* @desc функция вырезает на картинке произвольную отцентрованную область
/* @param $filename путь к файлу с исходной картинкой
/* @param $w нужная ширина "обрезка"
/* @param $h нужная высота "обрезка"
/* @param $target_filename  куда записывать результат. Если не указать, то перепишется исходный файл.
*/
  function evokeAlignedAreaT($filename,$w,$h,$target_filename=null){
    $thumb = imagecreatetruecolor($w, $h);
    $bgc = imagecolorallocate($thumb, 255, 255, 255);
    imagefilledrectangle($thumb, 0, 0, $w, $h, $bgc);
    $source = imagecreatefromjpeg($filename);
    $size = GetImageSize($filename);
    $x = round(($size[0]-$w)/2);
    $y = round(($size[1]-$h)/2);
    imagecopyresampled($thumb, $source, 0, 0, $x, $y, $w, $h, $w, $h);
    $target_filename = is_null($target_filename)?$filename:$target_filename;
    imagejpeg($thumb,$target_filename);
    imagedestroy($thumb);
    imagedestroy($source);
    return true;
  }


получаются превьюшки не очень симпатичные, http://novoshu.ru/media/thumb/20100606133555.JPG
можно ли их сделать более качественн

  Ответить  
 
 автор: Gubichev   (03.07.2010 в 21:26)   письмо автору
 
   для: Bvz   (03.07.2010 в 20:48)
 

imagejpeg($thumb,$target_filename,100); 

  Ответить  
 
 автор: Bvz   (03.07.2010 в 22:21)   письмо автору
 
   для: Gubichev   (03.07.2010 в 21:26)
 

спасибо!!!

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

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