ФорумПрограммированиеPHP для идиотов → Сохранить пропорции изображения

Сохранить пропорции изображения

  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 7 августа 2011 г. 19:08

    Добрые вечер мудрые люди)
    подскажите пожайлуста алгоритм сохранения пропорций изображения при его уменьшении
    как то до меня не доходит, получаеться то вытянуто то вообще пиздец

  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 7 августа 2011 г. 19:23, спустя 14 минут 15 секунд

    $w - требуемая ширина
    $ow - исходная ширина
    $oh - исходная высота

    $h = $oh / $ow * $w
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 7 августа 2011 г. 19:24, спустя 48 секунд

    - получаешь размер исходника
    - расчитываешь  коэффициент аспект-ратио для исходника
    - расчитываешь нужный коэффициент аспект-ратио для получаемой картинки
    - при сравнении коэффициентов выясняешь какой параметр будешь резать - ширину или высоту (кроме случая равенства коэффициентов)
    - режешь параметр рассчитанный ранее - как правило с двух сторон по половинке от полученной цифры кропа
    - порезанную картинку просто уменьшаешь
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 7 августа 2011 г. 19:27, спустя 3 минуты 11 секунд


    - получаешь размер исходника
    - расчитываешь  коэффициент аспект-ратио для исходника
    - расчитываешь нужный коэффициент аспект-ратио для получаемой картинки
    - при сравнении коэффициентов выясняешь какой параметр будешь резать - ширину или высоту (кроме случая равенства коэффициентов)
    - режешь параметр рассчитанный ранее - как правило с двух сторон по половинке от полученной цифры кропа
    - порезанную картинку просто уменьшаешь

    а как расчитать эти коофинценты?
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 7 августа 2011 г. 19:28, спустя 1 минуту 40 секунд

    height / width
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 7 августа 2011 г. 19:30, спустя 1 минуту 27 секунд

    ага ясно сейчас попробую переписать функцию, и через пару часов выкладу
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 11 августа 2011 г. 2:20, спустя 3 дня 6 часов 49 минут

    function resize($src, $dest, $width, $heigh, $quality = 90) {

    $ratio = $width/$heigh;
    $sizeImg = getimagesize($src);
    $ext = strtolower(substr($sizeImg['mime'], strpos($sizeImg['mime'], '/')+1));

    $srcRatio = $sizeImg[0]/$sizeImg[1];
    if($ratio < $srcRatio) $heigh = $width/$srcRatio;
    else $width = $heigh * $srcRatio;

    $destImg = imagecreatetruecolor($width, $heigh);
    $icfunc = 'imagecreatefrom' . $ext;
    if(!function_exists($icfunc)) return false;

    $srcImg = $icfunc($src);
    if(!imagecopyresampled($destImg, $srcImg, 0, 0, 0, 0, $width, $heigh, $sizeImg[0], $sizeImg[1]))
    return false;

    $sfunc = 'image' . $ext;
    if($format != 'gif') {
    $sfunc($destImg, $dest, $quality);
    } else {
    $sfunc($destImg, $dest);
    }

    imagedestroy($srcImg);
    imagedestroy($destImg);
    return true;
    }
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 11 августа 2011 г. 2:24, спустя 4 минуты 24 секунды

    Ivan, спасибо за отличный пример говнокода! лучший говнокод который гуглится с первого раза, остался в памяти на века всех пхп недопрограммистов :-)
    Сапожник без сапог
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 11 августа 2011 г. 2:43, спустя 19 минут 16 секунд


    Ivan, спасибо за отличный пример говнокода! лучший говнокод который гуглится с первого раза, остался в памяти на века всех пхп недопрограммистов :-)


    не за что, я просто помог человеку)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 11 августа 2011 г. 2:46, спустя 3 минуты 1 секунду

    я просто помог человеку)

    помогают тру вей ссылками а не говнокодом :-)

    http://www.php.net/manual/en/function.imagick-thumbnailimage.php
    http://www.php.net/manual/en/function.imagick-cropthumbnailimage.php

    :)
    Сапожник без сапог
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 11 августа 2011 г. 2:50, спустя 3 минуты 37 секунд


    я просто помог человеку)

    помогают тру вей ссылками а не говнокодом :-)

    http://www.php.net/manual/en/function.imagick-thumbnailimage.php
    http://www.php.net/manual/en/function.imagick-cropthumbnailimage.php

    :)


    С этими функциями столкнулся впервые. За информацию спасибо.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 11 августа 2011 г. 2:53, спустя 3 минуты 22 секунды

    не за что
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!