Ошибка "Недопустимый параметр" fom ImageMagick конвертировать в Windows

Я пытаюсь преобразовать PDF-документ в PNG файл с помощью средств командной строки ImageMagick с веб-сайта ASP.NET. Я создаю новый процесс оболочки и выполняю следующую команду:

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

Это хорошо работает при тестировании веб-сайта на моей локальной машине с сервером разработки ASP.NET для разработчиков VS, и эта команда также хорошо работает при вводе вручную в оболочку. При запуске из программно созданной оболочки в ASP.NET появляется следующее сообщение об ошибке:

Invalid Parameter - 96x96

Кто-нибудь знает, почему это происходит и что делать?

Я тестировал команду, когда вы регистрировались на сервере через RDP с другой учетной записью пользователя, чем процесс ASP.NET. Я использовал те же файлы установки ImageMagick и Ghostscript, что и на моем локальном компьютере, и активировал добавление пути установки ImageMagick к переменным окружения во время установки. С тех пор сервер не перезагружен.

Ответы

Ответ 1

convert также является именем исполняемого файла Windows, который преобразует файловую систему FAT в NTFS. Когда вы не укажете полный путь к исполняемому файлу, укажите:

... система сначала ищет текущий рабочий каталог, а затем ищет переменную окружения , проверяя каждую каталог слева направо, ища исполняемое имя файла, которое соответствует указанному имени команды.

"C:\Windows\System32" обычно присутствует в начале переменной% PATH%, в результате чего запускается программа для преобразования Windows, которая не работает с ошибкой "Invalid Parameter", как ожидалось.

Попробуйте указать полный путь к ImageMagick convert.exe следующим образом:

"C:\Program Files\ImageMagick\convert.exe" -density 96x96 "path_and_filename.pdf" "path_and_filename.png"

Ответ 2

В Window фактически существует "convert.exe" в system32 - убедитесь, что ваш script не запускает этот (возможно, пути среды на вашей машине разработки установлены по-разному).

Ответ 3

Еще пара вариантов исправления:

  • Измените системную переменную Path, чтобы указать путь к imagemagick как он первый контент, а затем добавить остальные после него. Это сделает окна всегда находят 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, затем добавьте путь к этой папке на свой системный путь. Итак, теперь, когда вы нажмете вкладку больше, вы, наконец, найдете нужную программу, которую хотите запустить

Ответ 4

да! если вы запустите окно "Администратор", то по умолчанию он будет равен C:\windows\sytem32 \... пока вы не находитесь в этом каталоге, команда запустит ImageMagick convert.exe

Моя проблема заключалась в том, что я использовал команду "FORFILES", которая сложна, потому что она требует использования "cmd/c" и передавая команду преобразования с параметрами @path и @file, и она немного ускользает от косых черт... само собой разумеется, это вызвало у меня часовые и часовые головные боли. Он даже анализирует шестнадцатеричные символы, например, если в вашем файловом пути есть комбинация 0x00, он будет считать, что значение шестнадцатеричного значения и манит ваш путь. У меня был путь к файлу с именем C:\ImageRes3000x3000 и FORFILES интерпретирует это буквально, и это вызвало странный путь. Извините, если это длинный бесполезный пост, но он должен быть FYI, если кто-то столкнется с этим, возможно, это им поможет. При этом FORFILES и "convert.exe" представляют собой мощную и простую линию переименования изображений script combo.

здесь мое полное переименование 3-х строк 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

Ответ 5

Как уже говорили другие, convert баллы в другую программу в вашем PATH. Вместо этого предварите свою команду magick. Таким образом, ваша команда вместо этого будет:

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

Ответ 6

Я отвечаю только так поздно, потому что imagemagick был обновлен. Теперь, если вы хотите использовать команду "convert", вы делаете это так:

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

или же

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

для нескольких изображений.

Тот же синтаксис для команды, просто добавьте magick перед ней