2016-06-02 37 views
5

Problema: ImageMagick convert non è in grado di ritagliare l'immagine. Sembra che non riconosca il tipo di immagine?ImageMagick: nessun delegato di decodifica per questo formato immagine `'@ error/constit.c/ReadImage/504

che cosa ho provato:

Ho cercato in giro online e ho visto diversi problemi simili, ma non la mia. Ho provato le loro soluzioni incluso

  • Disinstallazione e reinstallazione di ImageMagick tramite brew.
  • identificare formato -elenco (JPEG, GIF, PNG, TIFF, ecc erano tutti lì e tutti avevano i permessi rw)
  • convertire -version (png è è tra il built-in delegati) pic1 convertito
  • .png pic1-jpg.jpg (questo funzionava bene)
  • convert pic1 pic1-jpg.jpg-jpg.jpg (questo funzionava bene)
  • convert pic1-jpg.jpg 805X972 + 34 + 94 pic1 -jpg-crop.jpg (questo ha dato lo stesso errore di png come mostrato di seguito)

 

sto lavorando su Mac OSX El Capitan e tutto il resto in terminale funziona bene. ImageMagick era già installato.

quando ho eseguito:

$ convert /Users/Innovate/Desktop/crop/2015-04-26-GinaDate13_487.png 805X972+34+94 /Users/Innovate/Desktop/crop/2015-04-26-GinaDate13_487-cropped.png 

ottengo:

convertito: incapace di aprire l'immagine `805X972 + 34 + 94' : Nessun file o directory errore @/blob.c/OpenBlob/2702.

convert: nessun delegato di decodifica per questo formato di immagine `'@ error/constit.c/ReadImage/504.

nessun delegato decodifica per questo formato di immagine `' errore @/constitute.c/ReadImage/504

Negli altri messaggi su questo tema, la gente ottiene

convertire nessun delegato decodifica per questo formato di immagine PNG `'

o simile (tranne che con il loro tipo di immagine o il nome del file e il tipo di immagine)

 

Tuttavia, il mio non dice nulla sul tipo di file di immagine ...

Non ho provato a disinstallare ImageMagick poi installarlo manualmente da fonti perché non sono molto fiducioso a farlo .. .(questa soluzione è stata mostrata: https://stackoverflow.com/a/34633084/5398660)

Qualcuno sa cosa potrebbe succedere?

Inoltre, qualcuno può aiutarmi a interpretare la parte @ error/constit.c/ReadImage/504? Sto guardando il codice per constitute.c ma non sono sicuro di poter ottenere informazioni utili per risolvere il mio problema (conosco solo un po 'di C)

Grazie!

+0

Penso che manchi l'operatore di comando prima di '805X972 + 34 + 94'. L'utilità di conversione considera l'argomento della geometria come un percorso di file. – emcconville

+0

provare 'convertire /Users/Innovate/Desktop/crop/2015-04-26-GinaDate13_487.png -crop 805X972 + 34 + 94/Users/Innovate/Desktop/coltura/2015/04/26-GinaDate13_487-cropped.png' – emcconville

+0

haha ​​grazie a emcconville, ho postato la soluzione subito dopo aver postato questo. Mi chiedo se sia diverso dall'esempio pubblicato qui: http://apple.stackexchange.com/a/128000/156787 perché è El Capitan – Montag

risposta

2

Va bene, con la riproduzione in giro ho capito la soluzione e sto postando qui per altre persone che potrebbero incorrere in questo problema:

A quanto pare, questo non è/non lo è più/non per me il modo in cui per ritagliare un'immagine usando ImageMagick convert. Anche se questo uso è mostrato here non ha funzionato con me usando El Capitan (forse è il sistema operativo?).

Invece di utilizzare

convertire img.png 805X972 + 34 + 94 img-crop.png

Il comando corretto, che funziona è:

immagine convertito. png -crop 805X972 + 34 + 94 image-crop.png

 

Cioè, il comando passa:

convertito image.ext -crop altezza X larghezza + positionX + positionY * imagecropped.ext

 

 

Altro può essere trovato here. Dalla descrizione su quella pagina di ImageMagick ero confuso riguardo all'esempio in cui hanno convertito in rosa: -crop ma puoi semplicemente usarlo come ho detto sopra e funziona bene.

+0

Se guardi l'esempio a cui ti sei collegato nella tua risposta l'OP mancava - ritaglia nell'esempio di codice. Se guardi la sua animazione puoi vedere che contiene -crop. rose è un'immagine incorporata in Imagemagick per i test e quindi può essere usata come rosa: – Bonzo

+0

Grazie Bonzo, buona attenzione ai dettagli. Ho aggiornato l'esempio che ho collegato (con l'animazione) per correggere il frammento mancante. Grazie per aver spiegato cosa è "rosa". – Montag

+0

Sono contento di averlo risolto e sono stato sfortunato a scegliere un brutto pezzo di codice. Una volta che hai imparato Imagemagick, può essere abbastanza semplice. Ma può anche fare comandi molto complicati. – Bonzo

1

Stavo ricevendo lo stesso errore per la mancanza di alcune virgolette singole.

Quando si combinano le immagini con convert -draw con virgolette, l'immagine fornita deve essere racchiusa tra virgolette.

Nessun delegato decodifica per questo formato di immagine `' @ errore/constitute.c/ReadImage/504

convert myBackground.png -font Arial -pointsize 20 \ 
    -draw "gravity west image Over 50,80,20,20 'myForeground.png'" \ 
    # -----------------------------------------^ added missing single quotes 
    -flatten ./finalImage.jpg     

Quando ho aggiunto nelle singole virgolette myForeground il problema è scomparso. Che errore pessimo!

0

Lancio nei miei due centesimi come anche io ho lottato con questo problema negli ultimi giorni. Non ho avuto problemi nell'eseguire i comandi ImageMagick sul mio computer locale, ma ho ricevuto il messaggio di errore come menzionato da OP quando ho eseguito il comando da un server Tomcat in esecuzione su Azure Cloud.

ho potuto identificare la causa eseguendo il comando seguente:

convert -list format 

sulla mia macchina locale, che sarebbe tornato una lunga lista di tutti i formati supportati, considerando che, il Kudu (Azure strumento CLI) sarebbe restituisce un risultato vuoto. Ciò indica che ImageMagick non ha trovato il percorso dei suoi file DLL richiesti per l'elaborazione.

Nel mio caso, il problema è stato semplicemente causato da una mancanza di configurazione su Azure:

  • L'assenza della cartella principale ImageMagick nell'ambiente del sistema variabile% PATH%
  • L'assenza di un ambiente variabile "MAGICK_HOME" (insieme alla cartella principale della directory di installazione ImageMagick)
  • l'assenza di un ambiente variabile "MAGICK_CODER_MODULE_PATH" (insieme alla cartella di cui sopra +/moduli/codificatori)

NOTA: per le persone che stanno vivendo anche questo problema su Azure, è possibile dare un'occhiata a this SO rispondere che spiega come aggiungere una variabile d'ambiente utilizzando un XDT Transform.

0

// birra installare ImageMagick --build-da-source fisso per me su Mac, ha commentato in precedenza, rimuovere il // e correre sulla linea di comando

0

Un supplente comando Imagemagick sarebbe:

convert pic1-jpg.jpg[805x972+34+94] pic1-jpg-crop.jpg 

o come affermato in precedenza

convert pic1-jpg.jpg -crop 805x972+34+94 +repage pic1-jpg-crop.jpg 

vedere Inline Immagine Crop a https://www.imagemagick.org/script/command-line-processing.php

In genere, preferisco l'uso di x (lettere minuscole) anziché di X (lettere maiuscole) tra larghezza e altezza, per facilitare la lettura. Ma entrambi funzionano.