За последние 24 часа нас посетили 20682 программиста и 1010 роботов. Сейчас ищут 377 программистов ...

Странное поведение Imagick:distortImage

Тема в разделе "Обработка изображений средствами PHP", создана пользователем nagaaruka, 17 окт 2016.

  1. nagaaruka

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

    С нами с:
    17 окт 2016
    Сообщения:
    5
    Симпатии:
    0
    В теории скрипт должен немного сдвигать в перспективу заранее подготовленные, одинаковые по размеру изображения. Использую Imagick:: DISTORTION_PERSPECTIVE с одними и теме же аргументами смещения, НО изображения в итоге формируется разного размера, несмотря на то что исходные, как говорил выше, ширина и высота одинаковые... От чего может зависить размер результата?

    Версия imagick 3.4.1
    ImageMagick: 6.9.3-7 Q16

    PHP:
    1. <?php
    2. //$image=N_PATH.'test2/print_skew2.png';
    3. $image=N_PATH.'test2/print_skew21.png';
    4.  
    5. $imagick_texture  = new Imagick($image);
    6.  
    7. $points=array(
    8. 0,0,         35.75 , 0,
    9. 207, 0,      242.75, 3.7125,
    10. 0, 456,      0 ,465.12,
    11. 207, 456,    203.425,448.575
    12. );
    13.  
    14. $imagick_texture->distortImage(Imagick::DISTORTION_PERSPECTIVE, $points, true );
    15.  
    16. header("Content-type: image/png");
    17. echo $imagick_texture;
    Исходные изображения:
    [​IMG] [​IMG]

    Результат выполнения:
    [​IMG] [​IMG]
     
    #1 nagaaruka, 17 окт 2016
    Последнее редактирование: 17 окт 2016
  2. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    поставь $bestfit = false

    Код (PHP):
    1. $imagick_texture->distortImage(Imagick::DISTORTION_PERSPECTIVE, $points, false);
    If 'bestfit' is enabled, and distortion allows it, the destination image is adjusted to ensure the whole source 'image' will just fit within the final destination image, which will be sized and offset accordingly. Also in many cases the virtual offset of the source image will be taken into account in the mapping.
     
  3. nagaaruka

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

    С нами с:
    17 окт 2016
    Сообщения:
    5
    Симпатии:
    0
    Если указать bestfit = false - изображение просто будет обрезано до изначальных размеров. А значит часть рисунка, растянутая в перспективе - видна не будет.