web-dev-qa-db-fra.com

ImageMagick: Aucun délégué de décodage pour ce format d'image "@ error/constit.c/ReadImage/504

Problème: ImageMagick convert ne parvient pas à rogner l'image. On dirait qu'il ne reconnaît pas le type d'image?

Ce que j'ai essayé:

J'ai cherché en ligne et j'ai vu plusieurs problèmes similaires, mais pas le mien. J'ai essayé leurs solutions, y compris 

  • Désinstallez et réinstallez ImageMagick via brew.
  • le format identifier-liste (JPEG, GIF, PNG, TIFF, etc. étaient tous là et tous avaient des permissions rw)
  • convert -version (le png est parmi les délégués intégrés)}
  • convertir pic1.png pic1-jpg.jpg (cela a bien fonctionné)} _
  • convertir pic1-jpg.jpg pic1-jpg.jpg (cela a bien fonctionné)} _
  • convert pic1-jpg.jpg 805X972 + 34 + 94 pic1-jpg-crop.jpg (la même erreur que pour png est la suivante)}

Je travaille sur Mac OSX El Capitan et tout le reste dans le terminal fonctionne bien. ImageMagick était déjà installé.

Quand je cours:

$ 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 

Je reçois:

convert: impossible d'ouvrir l'image `805X972 + 34 + 94 ': Aucun fichier ou répertoire de ce type @ error/blob.c/OpenBlob/2702.

convert: aucun délégué de décodage pour ce format d'image '' @ error/constit.c/ReadImage/504.

aucun délégué de décodage pour ce format d'image '' @ error/constit.c/ReadImage/504

Dans les autres posts sur ce sujet, les gens se font 

convertir aucun délégué de décodage pour ce format d'image «PNG»

Ou similaire (sauf avec leur type d'image ou nom de fichier et type d'image)

Cependant, le mien ne dit rien sur le type de fichier image ...

Je n'ai pas essayé de désinstaller ImageMagick, puis de l'installer manuellement à partir de sources, car je ne suis pas très sûr de le faire ... (cette solution a été montrée: https://stackoverflow.com/a/34633084/5398660 )

Est-ce que quelqu'un sait ce qui pourrait se passer?

De plus, quelqu'un peut-il m'aider à interpréter la partie @ error/constit.c/ReadImage/504? Je regarde le code pour constitue.c mais je ne suis pas sûr de pouvoir obtenir des informations utiles pour résoudre mon problème (je ne connais qu'un peu de C)

Je vous remercie!

15
Montag
brew remove imagemagick //to delete current version
brew install imagemagick --build-from-source

corrigé pour moi sur mac

13
cfphpflex

Très bien, en jouant, j'ai trouvé la solution et je la poste ici pour d'autres personnes susceptibles de se heurter à ce problème:

Apparemment, ce n'est pas/n'est plus/n'est pas pour moi le moyen de recadrer une image en utilisant ImageMagick convert. Même si cet usage est montré ici cela n’a pas fonctionné pour moi avec El Capitan (c’est peut-être le système d’exploitation?).

À la place d'utiliser

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

La commande correcte, qui fonctionne est:

convert image.png -crop 805X972 + 34 + 94 image-crop.png

C'est, la commande va:

convertir image.ext -crop hauteur Xlargeur + positionX + positionY * imagecropped.ext

Plus peut être trouvé ici . D'après la description de cette page ImageMagick, j'étais confus à propos de l'exemple dans lequel ils ont converti convert rose: -crop mais vous pouvez simplement l'utiliser de la manière que j'ai mentionnée ci-dessus et cela fonctionne bien.

2
Montag

Jeter dans mes deux cents comme j'ai moi aussi lutté avec ce problème pour les derniers jours. Je n'ai eu aucun problème à exécuter les commandes ImageMagick sur mon ordinateur local, mais le message d'erreur mentionné par OP a été généré lorsque j'ai exécuté la commande à partir d'un serveur Tomcat exécuté sur Azure Cloud. 

Je pourrais identifier la cause en lançant la commande suivante:

convert -list format

Sur ma machine locale, la liste de tous les formats pris en charge est assez longue, alors que sur Kudu (outil CLI Azure), elle renvoie un résultat vide. Cela indique que ImageMagick n'a pas trouvé le chemin d'accès à ses fichiers DLL requis pour le traitement.

Dans mon cas, le problème était simplement dû à un manque de configuration sur Azure:

  • L'absence du dossier racine ImageMagick dans la variable d'environnement système% PATH%
  • L'absence d'une variable d'environnement "MAGICK_HOME" (définie dans le dossier racine de votre répertoire d'installation ImageMagick)
  • L'absence d'une variable d'environnement "MAGICK_CODER_MODULE_PATH" (définie dans le dossier mentionné ci-dessus +/modules/coders)

REMARQUE: pour les personnes rencontrant également ce problème sur Azure, vous pouvez consulter la réponse this SO qui explique comment ajouter une variable d'environnement à l'aide d'une transformation XDT.

1
SND

Je recevais la même erreur pour avoir oublié quelques citations simples. 

Lors de la combinaison d'images avec convert -drawavec des guillemets, l'image fournie doit être entourée de guillemets.

Aucun délégué de décodage pour ce format d'image '' @ error/constit.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                  

Lorsque j'ai ajouté entre guillemets simples autour de myForeground, le problème a disparu. Quelle erreur moche! 

1
lfender6445

Une autre commande Imagemagick serait:

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

ou comme indiqué précédemment

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

voir Inline Image Crop à https://www.imagemagick.org/script/command-line-processing.php

De manière générale, je préfère utiliser x (minuscule) plutôt que X (majuscule) entre la largeur et la hauteur, pour faciliter la lecture. Mais soit fonctionne.

0
fmw42

Je devais également lutter contre ce problème aujourd'hui dans le cadre d'une opération de conversion qui appliquait un profil d'espace colorimétrique différent.

Il semble que la commande de conversion d’imagick soit sensible à l’extension du nom de fichier du profil. Dans mon cas, c’était un fichier temporaire sans suffixe qui provoquait le même message d’erreur du titre de la question

convert infile.jpg -profile /tmp/profile-without-suffix outfile.jpg

L'ajout du suffixe correct au nom du fichier de profil résout le problème:

(en supposant le format ICC)

convert infile.jpg -profile /tmp/profile-without-suffix.icc outfile.jpg
0
tiguchi