За последние 24 часа нас посетили 18205 программистов и 1600 роботов. Сейчас ищут 854 программиста ...

Обрезать фото

Тема в разделе "PHP для новичков", создана пользователем allowance, 26 май 2010.

  1. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    Например есть фото:
    width: 1024px
    height: 768px

    Надо обрезать ширину(при условии что ширина больше чем высота) на 25% (576px, если у нас разрешение 1024x768) т.е. должно обрезать по бокам по 12,5% чтобы получилась фотка со стандартными пропорциями:
    width: 576px
    height: 768px

    Пока продумываю формулу(усложняет то, что бывают ещё нестандартные пропорции).
    Собственно какой функцией можно резать фотку по бокам?
     
  2. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    allowance
    Копировать и сохранять нужную часть с помощью gd.
    imagecopyresampled
     
  3. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    блин, ты че, смеешься? =)))
    Это тема пропорций, 5 класс, может четвертый.
    a : b = c : d
    1024 : 768 = 640 : x, откуда перемножение крайних членов пропорции и деление на средний будет 768 * 640 / 1024 = 480
    x = 480
    Ёлки-палки, 5 класс ... вот они, РНР программисты!
     
  4. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    а я сжимаю по высоте сколько мне надо сохранением пропорции и пофих)
     
  5. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Так уж и быть, помогу.

    PHP:
    1. <?php
    2.  
    3. // Ширина
    4. $width = 1024; // imagesx
    5.  
    6. // Высота
    7. $height = 768; // imagesy
    8.  
    9. // Уменьшение ширины в %
    10. $percents = 25;
    11.  
    12. // Если ширина больше высоты
    13. if($width > $height)
    14. {
    15.     // Новая ширина
    16.     $new_width  = ((100 - $percents) / 100) * $width;
    17.    
    18.     // Новая высота
    19.     $new_height = $height * $new_width / $width;
    20. }
    21.  
    22. ?>
    При этом РНР-код я максимально упростил.
    Можно не выполнять действия деления, а сразу записать проценты как 0.25.
    Кроме того можно вычислить коэффициент пропорциональности и работать только с ним.
    Но пока, автор, ты не можешь составить пропорцию 4-го — 5-го класса, работать с графикой тебе нельзя.
    Там ведь ещё и тригонометрия - косинусы, синусы, тангенсы, нахождение смещения и другие прелести.
    Ты предупрежден.
     
  6. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    а не, у меня тоже вычисляется
    PHP:
    1. <?
    2. $new_width = 250;
    3. $new_height = $height * ($new_width/$width);