簡體   English   中英

無法在 for 循環中運行 ImageMagick 的 PHP exec 命令

[英]Can't run PHP exec command for ImageMagick within for loop

我需要編寫 PHP 腳本來調用 ImageMagick 軟件我安裝在我的服務器上(Windows 服務器 2008 r2 與 Apache 服務器)將一組圖像轉換為 JPEG TIFF 格式。

我已經嘗試使用 exec() 和 ImageMagick 轉換命令來處理單個圖像並且它有效但是當我將 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 格式。

我會將您的輸入和 output 字符串放入一個變量中,以便您可以回顯它們以查看它們包含您期望的內容。

為什么要刪除.tif 然后將其添加回來?

你不需要用魔法轉換。

在 Windows 上,我總是將文件路徑放在“”中以包含它。

我不確定您是否需要轉義 \ 但回顯您的變量應該可以證明這一點。

嘗試通過將其寫入代碼來添加一些錯誤報告:

$array=array();
echo "<pre>";
exec("magick Input Output 2>&1", $array); // Your Imagemagick command
echo "<br>".print_r($array)."<br>"; 
echo "</pre>";

使用mogrify命令。 看看文檔

這會將文件夾中的所有圖像轉換為新格式,並且速度更快。

mogrify -format jpg *.tif

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM