繁体   English   中英

无法在 PHP 中使用 ImageMagick(转换)命令

[英]Can't Use ImageMagick (convert) command in PHP


我想在我的网站上使用 ImageMagick 和 PHP 编辑图像。
我在 Linux(Raspbian 操作系统)上并安装了 PHP 和 ImageMagick。
我正在尝试做类似的事情:使用 PHP `convert test.png test.webp`。所有工作都在终端中进行。

我试过的:

putenv("PATH=/usr/local/bin:/usr/bin:/bin");
完整命令路径“ /usr/bin/convert test.png test.webp ”(在终端中工作)
所有 PHP CMD 命令包括: exec() shell_exec() system() passthru()
(所有这些 output 都是空的,但是像echo $PWD这样的简单命令有效)
图片完整路径“ convert /home/pi/www/test.png /home/pi/www/test.webp ”(以及上述所有变体)

非常感谢任何帮助!

在 php shell_exec 命令中使用 2>&1 并尝试此代码;

$file = "/home/pi/www/test.png";
$dest = "/home/pi/www/test.webp";
$result = '';

$file_extension = strtolower(pathinfo($file, PATHINFO_EXTENSION));
if(extension_loaded("cwebp") || extension_loaded('gif2webp')) {
  if($file_extension=="png" or $file_extension=="jpg" or $file_extension=="jpeg"){
    $result = shell_exec("cwebp -q 80 ".escapeshellarg($file)." -o ".escapeshellarg($dest) . " 2>&1");
  }
  if($file_extension=="gif"){
    $result = shell_exec("gif2webp -q 80 ".escapeshellarg($file)." -o ".escapeshellarg($dest) . " 2>&1");
  }
} else if(extension_loaded("gmagick") || extension_loaded('imagick')) {
  if($file_extension=="png" or $file_extension=="jpg" or $file_extension=="jpeg" or $file_extension=="gif"){
    $result = shell_exec("convert ".escapeshellarg($file)." -quality 80 -define webp:lossless=true ".escapeshellarg($dest) . " 2>&1");
  }
} else {
  die("Does not have any webp library!");
}

echo $result;

我不知道你的 Imagick 版本,一些 arguments 可能因版本而异,但它可能会给你的代码一些想法。

您在 PHP 中还有一个 imagick 扩展: https://www.php.net/manual/fr/book.imagick.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM