【问题标题】:PHP: Need to convert imagemagick command to php scriptPHP:需要将 imagemagick 命令转换为 php 脚本
【发布时间】:2017-03-30 22:13:32
【问题描述】:

我使用此命令批量修改站点的图像。它们需要有这个尺寸才能适合主题。

现在我也想在 Facebook 广告中使用这些图片,但必须调整它们的大小。我使用的命令(效果很好)是:

for i in `ls -1 *.jpg`; do convert $i -fuzz 10% -trim +repage -resize 980x1200 -background white -gravity center -extent 980x1200 $i; done

现在我需要制作一个 PHP 脚本来做同样的事情,但还要返回图像作为响应。

我想出了以下内容:

<?php

/* Create the object and read the image in */
$im = new Imagick("image.jpg");

/* Trim the image with 10% fuzz */
$im->trimImage(10);

/* Repage */
$im->setImagePage(0, 0, 0, 0);

/* Resize */
$im->resizeImage(1200,628,Imagick::FILTER_LANCZOS,0);

/* Add Borders*/
$im->setImageBackgroundColor('White');
$im->setGravity('Centre');
$im->setImageExtent(1200,628);

/* Output the image */
header("Content-Type: image/" . $im->getImageFormat());
echo $im;
?>

不幸的是,它似乎不起作用。它所做的只是返回一个黑色矩形(看起来像脚本中使用的正确尺寸)。

【问题讨论】:

  • print_r(Imagick::getVersion()); 告诉你什么?
  • 你不能简单地echo $im。你应该使用echo $im-&gt;getimageblob();
  • 我的回声和你的似乎都对我有用。不幸的是,它只是返回一个正确尺寸的黑色矩形。所以我认为操作出了点问题

标签: php imagemagick imagick


【解决方案1】:

运行此代码时遇到的第一个错误:

PHP 警告:Imagick::setgravity() 期望参数 1 为整数,字符串在 resize.php 第 18 行给出

尝试改用imagick::GRAVITY_CENTER

下一期,Imagick::resizeImage()Imagick::setImageExtent() 期望参数按宽度、高度顺序排列。

最后,尝试在Imagick::resizeImage() 上设置一个非零值(如 1)来进行模糊处理,以解决黑色图像问题。

我不确定您是如何尝试获得边框的,但您可能想查看Imagick::borderImage()

我不知道这是否能解决你所有的问题,但它应该让你更接近!

<?php

/* Create the object and read the image in */
$im = new Imagick("image.jpg");

/* Trim the image with 10% fuzz */
$im->trimImage(10);

/* Repage */
$im->setImagePage(0, 0, 0, 0);

/* Resize */
$im->resizeImage(628, 1200, Imagick::FILTER_LANCZOS, 1);

/* Add Borders*/
$im->setImageBackgroundColor('White');
$im->setGravity(Imagick::GRAVITY_CENTER);
$im->setImageExtent(628, 1200);

/* Output the image */
header("Content-Type: image/" . $im->getImageFormat());
echo $im;
?>

【讨论】:

  • setGravity(Imagick::GRAVITY_CENTER) 似乎没有改变任何东西。期待 int 时仍然出错
  • Imagick::GRAVITY_CENTER 是一个整数。如果不是,您将收到其他错误。
  • 而且你从来没有回答过关于 ImageMagick 版本的问题。
  • ImageMagick 6.8.9-9 Q16 x86_64 2017-03-12
  • 实际上,重启 apache2 后,我没有收到任何错误。但它仍然无法正常工作。
【解决方案2】:

您可以使用“shell_exec(your command)”在 php 中运行命令。尝试一次,这可能对您有用。 参考http://php.net/manual/en/function.shell-exec.php

【讨论】:

    猜你喜欢
    • 2019-12-20
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 2019-08-27
    • 2021-12-14
    • 2018-04-09
    • 2017-06-22
    • 2013-06-28
    相关资源
    最近更新 更多