Imagick не отражает гравитацию, как только она установлена - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь перевести следующий фрагмент кода командной строки Imagemagick

 convert tmpI.mpc -gravity center -crop ${ww}x${hc}+0+0 +repage

следующим образом

$tmpIC->setGravity(imagick::GRAVITY_CENTER);
$tmpIC->cropImage($ww, $hc, 0, 0);
$tmpIC->setImagePage($tmpIC->getImageWidth(), $tmpIC->getImageHeight(), 0, 0);

, но установка или отсутствие установки гравитации не имеет значения.Скажите пожалуйста, что не так с кодом, который у меня есть

Ширина и высота изображения перед кадрированием

tmpIC->getImageWidth() = 479
tmpIC->getImageHeight() = 599

А значения ww и hc

ww=479
hc=479

, а ширина и высота изображения после кадрирования следующие:

tmpIC->getImageWidth() = 479
tmpIC->getImageHeight() = 479

1 Ответ

0 голосов
/ 14 декабря 2018

Не все команды ImageMagick могут быть напрямую преобразованы в команды с одинаковыми именами в Imagick.

В вашем случае команда гравитации не очень хорошо отображается - но тот же эффект обрезки изображения вЦентр может быть создан одним вызовом функции cropImage:

$tmpIC->cropImage(
    $ww,
    $hc,
    $startX = ($tmpIC->getImageWidth() - $ww) / 2,
    $startY = ($tmpIC->getImageHeight() - $hc) / 2
);
...