rs.
rs.

Reputation: 413

Error "Invalid Parameter" fom ImageMagick convert on Windows

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 following command:

convert -density 96x96 "[FileNameAndPath].pdf" "[FileNameAndPath].png"

This runs well when testing the website on my local machine with the ASP.NET Develeopment Server of VS and the command also works well when manually entered into the shell. When running from the programatically created shell in ASP.NET there is the following error message:

Invalid Parameter - 96x96

Does anybody know why that happens and what to do?

I have tested the command while being logged in on the server via RDP with a different user account than the ASP.NET process. I have used exactly the same ImageMagick and Ghostscript installation files as on my local machine and have activated adding the ImageMagick installation path to the enironment variables during installing. The server has not been rebooted since than.

Upvotes: 36

Views: 35207

Answers (7)

Mary N
Mary N

Reputation: 117

In 2024 replace convert with

"C:\Program Files\ImageMagick-7.1.1-Q16-HDRI\magick.exe"

Upvotes: 0

Recessive
Recessive

Reputation: 1929

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

Upvotes: 5

dagrha
dagrha

Reputation: 2559

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"

Upvotes: 23

smac89
smac89

Reputation: 43068

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

Upvotes: 2

Salman Arshad
Salman Arshad

Reputation: 272006

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"

Upvotes: 78

rojomisin
rojomisin

Reputation: 71

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

Upvotes: 1

Olaf
Olaf

Reputation: 10247

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).

Upvotes: 6

Related Questions