2010-06-17 18 views
14

Sto tentando di convertire un documento PDF in un file PNG utilizzando gli strumenti da riga di comando di ImageMagick da un sito Web ASP.NET. Creo un nuovo processo shell e ahve è eseguire il seguente comando:Errore "Parametro non valido" da ImageMagick convert in Windows

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

Questo funziona bene quando si verifica il sito web sulla mia macchina locale con l'ASP.NET Develeopment Server di VS e il comando funziona bene anche quando inseriti manualmente nel guscio. Quando si esegue dal guscio programmaticamente creato in ASP.NET c'è il seguente messaggio di errore:

Invalid Parameter - 96x96 

Qualcuno sa perché questo accade e cosa fare?

Ho verificato il comando durante l'accesso al server tramite RDP con un account utente diverso rispetto al processo ASP.NET. Ho usato esattamente gli stessi file di installazione di ImageMagick e Ghostscript come sul mio computer locale e ho attivato l'aggiunta del percorso di installazione di ImageMagick alle variabili di ambiente durante l'installazione. Il server non è stato riavviato da allora.

+0

Puoi mostrare la riga di comando completa che non funziona per favore? (Con i nomi dei file di vita reale) –

+0

E sei sicuro di poter chiamare l'eseguibile ghostscript dalla shell creata a livello di codice? –

+0

La riga di comando completa è convert -density 96x96 "C: \ inetpub \ wwwroot \ UserData \ Pdf \ f18196da-571c-45a6-b99b-615fb3edb454.pdf" "C: \ inetpub \ wwwroot \ UserData \ Pdf \ f18196da- 571c-45a6-b99b-615fb3edb454.png " Pensavo che convert avrebbe chiamato gs quando il formato di input era PDF e convert ha funzionato dal prompt della shell. Non l'ho provato. –

risposta

3

In Window esiste effettivamente un "convert.exe" in system32: assicurarsi che lo script non lo avvi (i percorsi di ambiente sul computer di sviluppo sono impostati in modo diverso).

42

convert è anche il nome di un file eseguibile di Windows che converte il file system FAT in NTFS. Se non si specifica il percorso completo di un file eseguibile, citazione:

... il sistema cerca prima la directory di lavoro corrente e quindi ricerche del path environment variable, esaminando ogni directory da sinistra a destra, alla ricerca di un nomefile eseguibile che corrisponde al nome del comando indicato.

"C: \ Windows \ System32" è generalmente presente all'inizio del variabile% PATH%, causando l'utilità convertito di Windows per lanciare, che non riesce con l'errore "Parametro non valido" come previsto.

provare a specificare il percorso completo della convert.exe del ImageMagick in questo modo:

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

my C: \ Programmi \ ImageMagick \ non contiene un file convert.exe. Qualcuno sa che cosa indicare in nuove build di imagemagic? – ScottF

+3

Ho appena installato l'ultima versione e sembra che si chiami "magick.exe". –

+0

In *** cygwin *** utilizzando _ImageMagick_ lo stesso errore – Kiquenet

1

sì! se si avvia una finestra di comando dell'amministratore, il suo valore predefinito è C: \ windows \ sytem32 \ ... fino a quando non ci si trova in quella directory il comando preleverà ImageMagick convert.exe

Il mio problema era che stavo usando il Comando "FORFILES" che è complicato perché richiede l'uso di "cmd/c" e il passaggio del comando convert con i parametri @path e @file e fa qualche escape delle barre ... inutile dire che mi hanno causato ore e ore di mal di testa . Analizza anche i caratteri esadecimali, come se il percorso file contenga la combinazione 0x00, penserà che è un valore esadecimale e manipola il tuo percorso. Avevo un filepath chiamato C:\ImageRes3000x3000 e FORFILI lo interpretava letteralmente e causava uno strano problema di percorso. Scusate se questo è un post lungo e inutile, ma è pensato per essere FYI, se qualcuno lo attraversa, forse li aiuterà. Detto questo, FORFILES e "convert.exe" sono una combo di script di linea di ridenominazione dell'immagine potente e semplice.

qui è la mia piena 3 riga dello script immagine ridenominazione

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

Percorso del tuo script? Percorso Sistema Windows? 'cmd/c' sarà * C: \ windows \ sytem32 * percorso? Dove percorso di installazione _ImageMagick_? hai altri script che funzionano usando ** ImageMagick ** nello stesso percorso? – Kiquenet

2

un altro paio di opzioni per la risoluzione di questo:

  • Modifica la tua variabile di sistema Path per contenere il percorso per ImageMagick come è primo contenuto e quindi aggiungere il resto dopo di esso. Questo farà sì che le finestre trovino sempre l'imagemagic convert prima di trovare l'altro programma di conversione. Quindi qualcosa del genere: C:\Program Files\ImageMagick-6.9.2-Q16;C:\Program Files\Haskell Platform\2014.2.0.0\lib\extralibs\bin;...

  • Un'altra opzione è quella di creare una cartella dedicata da qualche parte sulla macchina in cui verranno posizionate le scorciatoie per alcune di queste interruzioni di nomi. Quindi quello che fai è che tu rinomini quelle scorciatoie a nomi significativi, ad esempio convert_image_magick, quindi aggiungi il percorso a questa cartella sul tuo percorso di sistema. Quindi, ora come si colpisce scheda di più, si potrà finalmente trovare il programma giusto che si desidera eseguire

0

Come altri hanno detto convert punti per un programma diverso nel vostro PATH. Inserisci invece il comando con magick. Quindi il tuo comando dovrebbe essere:

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