[英]Error “Invalid Parameter” fom ImageMagick convert on Windows
我正在嘗試使用ASP.NET網站上的ImageMagick命令行工具將PDF文檔轉換為PNG文件。 我創建一個新的shell進程,並執行以下命令:
convert -density 96x96 "[FileNameAndPath].pdf" "[FileNameAndPath].png"
當使用VS的ASP.NET開發服務器在本地計算機上測試網站時,這很好用,並且在手動輸入shell時該命令也可以正常工作。 從ASP.NET中以編程方式創建的shell運行時,會出現以下錯誤消息:
Invalid Parameter - 96x96
有誰知道為什么會這樣,怎么辦?
我在使用與ASP.NET進程不同的用戶帳戶通過RDP登錄服務器時測試了該命令。 我使用了與本地計算機完全相同的ImageMagick和Ghostscript安裝文件,並在安裝過程中激活了將ImageMagick安裝路徑添加到enironment變量。 服務器從未重啟過。
convert
也是將FAT文件系統轉換為NTFS的Windows可執行文件的名稱。 如果未指定可執行文件的完整路徑,請引用:
...系統首先搜索當前工作目錄,然后搜索路徑環境變量 ,從左到右檢查每個目錄,查找與給定命令名稱匹配的可執行文件名。
“C:\\ Windows \\ System32”通常出現在%PATH%變量的開頭,導致Windows轉換實用程序啟動,失敗並出現“無效參數”錯誤。
嘗試指定ImageMagick的convert.exe的完整路徑,如下所示:
"C:\Program Files\ImageMagick\convert.exe" -density 96x96 "path_and_filename.pdf" "path_and_filename.png"
正如其他人已經說明convert
點convert
為PATH中的其他程序。 而是用magick
你的命令作序。 所以你的命令將改為:
magick convert -density 96x96 "[FileNameAndPath].pdf" "[FileNameAndPath].png"
在Window中,system32中實際存在“convert.exe” - 確保您的腳本沒有啟動那個(可能是開發機器上的環境路徑設置不同)。
還有幾個解決這個問題的方法:
編輯Path
系統變量以包含imagemagick的路徑,因為它是第一個內容,然后在其后添加其余內容。 這將使Windows在找到其他轉換程序之前始終首先找到imagemagic convert
。 所以像這樣: C:\\Program Files\\ImageMagick-6.9.2-Q16;C:\\Program Files\\Haskell Platform\\2014.2.0.0\\lib\\extralibs\\bin;...
另一個選擇是在您的計算機上的某個位置創建一個專用文件夾,您可以在其中放置一些名稱沖突的快捷方式。 然后,您要將這些快捷方式重命名為有意義的名稱,例如convert_image_magick
,然后將此文件夾的路徑添加到系統路徑中。 所以現在當你點擊更多標簽時,你最終會找到你想要運行的正確程序
是! 如果你啟動一個管理員命令窗口,它默認為C:\\ windows \\ sytem32 \\ ...只要你不在該目錄中該命令將拾取ImageMagick convert.exe
我的問題是我使用的是“FORFILES”命令,這很棘手,因為它需要使用“cmd / c”並使用@path和@file參數傳遞convert命令,它會做一些斜線轉義...不用說它是由於它造成的我頭疼幾個小時。 它甚至會解析十六進制字符,就好像你的文件路徑中包含組合0x00一樣,它會認為這是一個十六進制值並且會破壞你的路徑。 我有一個名為C:\\ImageRes3000x3000
的文件路徑和FORFILES字面解釋,它引起了一個奇怪的路徑問題。 對不起,如果這是一個長期無用的帖子,但它的意思是FYI,如果有人遇到這個,也許它會幫助他們。 話雖這么說,FORFILES和“convert.exe”是一個功能強大且簡單的圖像重命名行腳本組合。
這是我的完整3行圖像重命名腳本
robocopy D:\SRC_DIR\ D:\DEST_DIR\_staging *.jpg /e /MAXAGE:2
FORFILES /P D:\DEST_DIR\_staging\ /S /M *.jpg /C "cmd /c convert.exe @path -quality 65 -resize 1500 D:\RESIZED_DIR\\@file"
DEL D:\DEST_DIR\_staging\*.* /S /Q
我只是回答這個問題因為imagemagick已經更新了。 現在,如果你想使用“convert”命令,你可以這樣做:
magick convert "image.png" "document.pdf"
要么
magick convert "image_00*.png" "document.pdf"
用於多個圖像。
命令的語法相同,只需在它之前添加magick
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.