Error “Invalid Parameter” fom ImageMagick convert on Windows

后端 未结 6 2139
我在风中等你
我在风中等你 2020-12-30 23:39

I am trying to convert a PDF document into a PNG file using ImageMagick command line tools from a ASP.NET website. I create a new shell process and ahve it execute the follo

相关标签:
6条回答
  • 2020-12-31 00:08

    As others have stated convert points to a different program in your PATH. Instead preface your command with magick. So your command would instead be:

    magick convert -density 96x96 "[FileNameAndPath].pdf" "[FileNameAndPath].png"
    
    0 讨论(0)
  • 2020-12-31 00:08

    A couple more options for fixing this:

    • Edit your Path system variable to contain the path to imagemagick as it's first content and then add the rest after it. This will make windows always find the imagemagic convert first before it finds the other convert program. So something like this: C:\Program Files\ImageMagick-6.9.2-Q16;C:\Program Files\Haskell Platform\2014.2.0.0\lib\extralibs\bin;...

    • Another option is to create a dedicated folder somewhere on your machine where you will place shortcuts for some of these name clashes. Then what you do is that you rename those shortcuts to meaningful names, for example convert_image_magick, then add the path to this folder to your system path. So now as you hit tab more, you will finally find the right program you want to run

    0 讨论(0)
  • 2020-12-31 00:13

    yes! if you launch an Administrator command window it defaults to C:\windows\sytem32\ ... as long as you're not in that directory the command will pickup the ImageMagick convert.exe

    My issue was I was using the "FORFILES" command which is tricky because it requires using "cmd /c" and passing the convert command with @path and @file parameters and it does some escaping of slashes... needless to say it's caused me hours and hours of headache. It even parses hex characters, like if your filepath has the combination 0x00 in it, it will think that's a hex value and mangle your path. I had a filepath named C:\ImageRes3000x3000 and FORFILES interprets that literally and it caused a strange path issue. Sorry if this is a long useless post but it's meant to be FYI, if someone runs across this, maybe it will help them. That being said, FORFILES and "convert.exe" are a powerful and simple image renaming line script combo.

    here's my full 3 line image renaming script

    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
    
    0 讨论(0)
  • 2020-12-31 00:17

    I am only answering this late because imagemagick was updated. Now, if you wish to use the "convert" command, you do it like this:

    magick convert "image.png" "document.pdf"
    

    or

    magick convert "image_00*.png" "document.pdf"
    

    for multiple images.

    Same syntax for command, just add magick before it

    0 讨论(0)
  • 2020-12-31 00:23

    convert is also the name of a windows executable which converts FAT filesystem to NTFS. When you do not specify the full path of an executable, quote:

    ...the system first searches the current working directory and then searches the path environment variable, examining each directory from left to right, looking for an executable filename that matches the command name given.

    "C:\Windows\System32" is generally present in the beginning of %PATH% variable, causing the Windows convert utility to launch, which fails with "Invalid Parameter" error as expected.

    Try specifying the full path of the ImageMagick's convert.exe like so:

    "C:\Program Files\ImageMagick\convert.exe" -density 96x96 "path_and_filename.pdf" "path_and_filename.png"
    
    0 讨论(0)
  • 2020-12-31 00:27

    In Window actually exists a "convert.exe" in system32 - make sure your script doesn't start that one (maybe the environment paths on your development machine are set differently).

    0 讨论(0)
提交回复
热议问题