【发布时间】:2019-10-30 04:57:51
【问题描述】:
我需要编写 PHP 脚本来调用我安装在我的服务器(Windows server 2008 r2 和 Apache 服务器)上的 ImageMagick 软件,将一组 TIFF 格式的图像转换为 JPEG 格式。
我已经尝试使用 ImageMagick convert 命令对单个图像执行 exec() 并且它有效,但是当我将 exec() 放入 for 循环以遍历一组图像时,PHP 脚本似乎永远运行,直到服务器超时停止它。
$dir = "C:\\Apache24\htdocs\AutoRep\\img\\A101";
$files1 = scandir($dir);
$countarray = count($files1);
for ($x = 0; $x < $countarray; $x++){
if (preg_match("/new/i", $files1[$x]) && preg_match("/VOP/i", $files1[$x])){
$file_name = substr($files1[$x],0,-4); // to remove .tif from file name
$command = "magick convert C:\Apache24\htdocs\AutoRep\\img\\A101\\$file_name.tif C:\Apache24\htdocs\AutoRep\\img\\A101\\$file_name.jpg";
exec($command);
}
}
我希望脚本会将图像组从 TIFF 转换为 JPEG 格式。
【问题讨论】:
-
scandir()将返回.和..如果in_array($files1[$x], ['.','..']);则应返回continue -
@zanderwar 他们已经不匹配已经存在的 preg_match,因为
.或..不包含“新”或“VOP” -
你得到任何转换的图像吗?不要忘记转义所有反斜杠。你现在只能逃脱一些。
-
为每个在 exec() 命令中调用 Imagemagick convert 的图像编写一个 PHP 循环。或者使用 PHP Imagick 和 PHP 循环。
-
您几乎从不想使用
magick后跟convert。仅在 v7 中使用magick,在 v6 中仅使用convert。
标签: php imagemagick