我正在尝试使用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变量。服务器自从没有重新启动。
答案 0 :(得分:49)
convert
也是将FAT文件系统转换为NTFS的Windows可执行文件的名称。如果未指定可执行文件的完整路径,请引用:
...系统首先搜索当前的工作目录然后 搜索path environment variable,检查每个 目录从左到右,寻找可执行文件名 匹配给定的命令名称。
“C:\ Windows \ System32”通常出现在%PATH%变量的开头,导致 Windows 转换实用程序启动,失败并显示“无效参数”错误。< / p>
尝试指定ImageMagick的convert.exe的完整路径,如下所示:
"C:\Program Files\ImageMagick\convert.exe" -density 96x96 "path_and_filename.pdf" "path_and_filename.png"
答案 1 :(得分:5)
正如其他人所说,convert
指向PATH中的其他程序。而是使用magick
作为命令的前缀。所以你的命令就是:
magick convert -density 96x96 "[FileNameAndPath].pdf" "[FileNameAndPath].png"
答案 2 :(得分:4)
在Window中,system32中实际存在“convert.exe” - 确保您的脚本没有启动那个(可能是开发机器上的环境路径设置不同)。
答案 3 :(得分:1)
是的!如果你启动一个管理员命令窗口,它默认为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
答案 4 :(得分:1)
我只回答这很晚,因为imagemagick已更新。现在,如果您希望使用“转换”命令,请按以下步骤进行操作:
magick convert "image.png" "document.pdf"
或
magick convert "image_00*.png" "document.pdf"
用于多张图片。
命令的语法相同,只需在其前面添加magick