簡體   English   中英

錯誤“無效參數”fom ImageMagick在Windows上轉換

[英]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"

正如其他人已經說明convertconvert為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.

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