2

我构建了这个 PHP 代码以使用 ImageMagick 将 gif 文件转换为 jpg,但它似乎不起作用。也许我错过了一些东西:

<?php
$cwd = getcwd();
$directory = 'temp_images/input/'; // add path to the source direcotry, reprocesses all images directly, not fancy.

$dh = opendir($directory);

while($file = readdir($dh)) {
  if (strlen($file) > 2) {
    $dirfiles[]=$file;
  }
}
closedir($dh);
reset($dirfiles);
asort($dirfiles);


set_time_limit(0);
foreach ($dirfiles as $dirfile) {
  $file = $directory.$dirfile;
  $cmd = 'mogrify -format jpg *.gif $file';     
  echo  $dirfile . " mogrified to JPG \n";
}

?>

gif 文件没有被转换。

更新:在我自己的代码中,我替换为 $cmd = 'mogrify -format jpg *.gif $file'; to exec("mogrify -format jpg . $file");

当我使用 mogrify 时,我的印象是原始文件被清除了。我该怎么做?

4

2 回答 2

0

永远不会执行......它$cmd只是一个字符串值。

于 2013-10-14T22:09:15.563 回答
0

您使用了错误类型的“引号”

foreach ($dirfiles as $dirfile) {
  $file = $directory.$dirfile;
  $cmd = 'mogrify -format jpg *.gif $file';     
  echo  $dirfile . " mogrified to JPG \n";
}

您需要反引号运算符

foreach ($dirfiles as $dirfile) {
  $file = $directory.$dirfile;
  $cmdResult = `mogrify -format jpg *.gif $file`;     
  echo  $dirfile . " mogrified to JPG \n";
}

这与使用shell_exec相同。

foreach ($dirfiles as $dirfile) {
  $file = $directory.$dirfile;
  $cmdResult = shell_exec ( "mogrify -format jpg *.gif {$file}" );     
  echo  $dirfile . " mogrified to JPG \n";
}
于 2013-10-14T22:14:58.573 回答