【问题标题】:Imagick not reflects the gravity once it is setImagick一旦设置就不会反映重力
【发布时间】:2019-05-13 09:42:15
【问题描述】:

我正在尝试翻译以下 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

【问题讨论】:

  • 您建议的convert 命令在命令行上有效吗?尝试重置页面(使用+repage裁剪之前。
  • 是的,转换命令完美运行。另外,我尝试在裁剪之前重置页面(+repage),但没有区别
  • 起始图像的尺寸是多少? $ww$hc 的值是多少? $tmpIC->getImageWidth()$tmpIC->getImageHeight() 在裁剪后返回什么。请在您的问题下单击edit 并在此处而不是在 cmets 中更新信息。谢谢。
  • 更新了问题。请检查
  • 还有起始图片?

标签: imagemagick imagick imagemagick-convert imaging


【解决方案1】:

并非所有 ImageMagick 命令都可以直接转换为 Imagick 中相同命名的命令。

在您的情况下,gravity 命令映射得不是很好 - 但是您可以在单个cropImage 函数调用中自己完成将图像裁剪到中心的相同效果:

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

【讨论】:

    猜你喜欢
    • 2011-08-14
    • 2018-08-04
    • 2011-04-17
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多