错误“无效参数”fom ImageMagick在Windows上转换

时间:2010-06-17 08:56:56

标签: asp.net windows imagemagick

我正在尝试使用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变量。服务器自从没有重新启动。

5 个答案:

答案 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