[Ищу]функция обрезания изображения

Тема в разделе "PHP", создана пользователем Acidrayne, 9 мар 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    Подскажите как реализовать, нужна функция которая при загрузке изображения обрезала или закрашивала определенную полосу снизу по всей ширине!
     
  2. *mm*

    *mm* Создатель

    Регистр.:
    1 окт 2009
    Сообщения:
    29
    Симпатии:
    2
    Не очень понятно, какую полоску Вам нужно обрезать/закрасить, пиксель? n-пикселей?
     
  3. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
  4. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20

    Есть изображение:

    Код:
    |----------|
    |          |
    |          |
    |  img     |
    |          |
    |----------|
    |это резать| 
    |----------|
     
  5. tenmed

    tenmed Создатель

    Регистр.:
    29 янв 2010
    Сообщения:
    10
    Симпатии:
    1
    функции gd библиотеки, например imagefilledrectangle
     
  6. stasdre

    stasdre Постоялец

    Регистр.:
    15 янв 2010
    Сообщения:
    125
    Симпатии:
    18
    Вот не плохой класhttp://www.verot.net/php_class_upload_samples.htm:ay:
     
  7. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    Использование класса не уместно, скажите в стандартном арсенале нету ничего подобного чтоб резало изображения?
     
  8. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    Вот рабочий пример функции по обрезке картинок
    PHP:
    <?
    function 
    resize($src,$dest,$folder,$isize=false){
    #
    var $info=null;
    var 
    $format=null;
    var 
    $isfunc=null;
    var 
    $rgb=0xFFFFFF;
    var 
    $quality=85;
    var 
    $width=100;
    var 
    $height=100;
    #
    if(!file_exists($src))return false;
    #
    $info=getimagesize($src);
    if(!
    $info)return false;
    #
    preg_match("#([a-z]+)$#i",$info['mime'],$null);
    $format=$null[0];
    $isfunc="imagecreatefrom{$format}";
    if(!
    function_exists($isfunc))return false;
    #
    if($isize){$width=$info[0];$height=$info[1];}
    #
    $x_ratio=$width/$info[0];
    $y_ratio=$height/$info[1];
    $ratio=min($x_ratio,$y_ratio);
    $use_x_ratio=($x_ratio==$ratio);
    #
    $new_width=$use_x_ratio?$width:floor($info[0]*$ratio);
    $new_height=!$use_x_ratio?$height:floor($info[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=$isfunc($src);
    $idest=imagecreatetruecolor($width,$height);
    imagefill($idest,0,0,$rgb);
    imagecopyresampled($idest,$isrc,$new_left,$new_top,0,0,$new_width,$new_height,$info[0],$info[1]);
    @
    mkdir($folder,0777,true);
    imagejpeg($idest,$folder.$dest.".jpg",$quality);
    imagedestroy($isrc);
    imagedestroy($idest);
    #
    return true;
    }
    ?>
     
    Acidrayne нравится это.
  9. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    Скажите она обрезает или все же делает ресайз ? И подходит ли она для других форматов кроме jpg ?
     
  10. lexesv

    lexesv

    Регистр.:
    15 ноя 2006
    Сообщения:
    219
    Симпатии:
    103
    Я использовал convert

    http://www.imagemagick.org/script/command-line-options.php?ImageMagick=3r1mgo2lm975etes027ljfke73#crop

    быстро, просто и удобно. и никакой нагрузки на связку апач+пхп
    что то типа

    PHP:
    exec("convert -crop 300x300+600+600 input.jpg out9.jpg");

    ставится просто
    Код:
    *buntu
    sudo apt-get install ImageMagick
    
    centos
    yum install ImageMagick
    
    gentoo
    emerge ImageMagick
     
Статус темы:
Закрыта.