2011-09-13 101 views
3

我使用ImageMagick將RAW文件(* .nef擴展名)轉換爲JPEG圖像。我實際上是從PHP內部完成這項工作的,但是沒有使用IMagick擴展(我花了太多時間把我的頭撞到了牆上,試圖讓我最終放棄工作)。相反,我使用PHP的exec()函數從命令行調用ImageMagick,只是在那裏進行操作。無論如何,我寫了一個簡單的PHP腳本來做到這一點 - 將NEF圖像轉換成JPEG圖像 - 它的工作原理!我通過了很多測試。當JPEG不存在時,它創建它。當JPEG已經存在時,它會覆蓋它。完善!如何用ImageMagick修復此錯誤?

直到今天。我上週五做了這個劇本。今天(星期一),當它試圖使用它時,它停止工作。我從字面上改變了沒有什麼,但幾天之後,它沒有像我週五跑過的所有相同的測試。我可以從命令行檢索輸出,並且這些是這次遇到的錯誤:

Magick: `%s' (%d) dcraw.exe -4 -w -O "C:/Windows/TEMP/magick-iDvVnHw-.ppm" "C:/Windows/TEMP/magick-hYeYwWRd" @ error/utility.c/SystemCommand/2094. 
Magick: delegate failed `dcraw.exe -4 -w -O "%u.ppm" "%i"' @ error/delegate.c/InvokeDelegate/1058. 
Magick: unable to open image `C:/Windows/TEMP/magick-iDvVnHw-.ppm': No such file or directory @ error/blob.c/OpenBlob/2588. 
Magick: missing an image filename `E:\test.jpg' @ error/convert.c/ConvertImageCommand/3015. 

這些錯誤在星期五沒有顯示。他們爲什麼現在出現?他們的意思是什麼?我能對他們做些什麼?提前致謝。

回答

0

嗯,我能解決它。我做了兩件事,但我並不完全確定第一件事情有沒有影響,但我會提到兩個人都爲掙扎着的其他人。首先,由於它似乎對臨時文件有問題,因此我更改了C:\Windows\TEMP文件夾上的Windows安全性/權限,以明確允許IIS_USER完全控制以及Everyone

但其次,更重要的是,我改變了我傳遞給exec()的命令。以前我的命令看起來是這樣的:

$cmd = 'C: & "C:\\Program Files (x86)\\ImageMagick\\convert.exe" '; 
$cmd .= '"E:\\test.nef" "E:\\test.jpg" 2>&1'; 
exec($cmd, $output, $return); 

所以不是我指定了新的「臨時」目錄下,並設置當前路徑,像這樣:

$cmd = 'SET MAGICK_TMPDIR=E:\\Temp&SET path=C:\\Program Files (x86)\\;%path%& '; 
$cmd .= '"C:\\Program Files (x86)\\ImageMagick\\convert.exe" '; 
$cmd .= '"E:\\test.nef" "E:\\test.jpg" 2>&1'; 
exec($cmd, $output, $return); 

這奏效了!腳本再次運行。

2

我對Linux的一個類似的錯誤:

No such file or directory @ error/blob.c/OpenBlob/2709. convert: no images defined `/tmp/transform_5c88983-1.jpg' @ error/convert.c/ConvertImageComman 

的問題是在我的德國picturename特殊字符:

images/1/14/Ministerium-für-Bildung.jpg 

我走進了文件夾,並創建無字符符號鏈接:

ln -s Ministerium-für-Bildung.jpg Ministerium-fr-Bildung.jpg 
相關問題