it-swarm.com.de

ImageMagick: Kein Dekodierungsdelegat für dieses Bildformat @ fehler/const.c/ReadImage/504

Problem: ImageMagick convert kann kein Bild zuschneiden. Es sieht so aus, als ob es den Bildtyp nicht erkennt?

Was ich versucht habe:

Ich habe online gesucht und mehrere ähnliche Probleme gesehen, aber nicht meine. Ich habe versucht, ihre Lösungen einzuschließen 

  • Deinstallation und Neuinstallation von ImageMagick via Brew.
  • identifizieren-Listen-Format (JPEG, GIF, PNG, TIFF usw. waren alle vorhanden und alle hatten RW-Berechtigungen)
  • convert -version (png gehört zu den eingebauten Delegierten)
  • convert pic1.png pic1-jpg.jpg (das hat gut funktioniert)
  • convert pic1-jpg.jpg pic1-jpg.jpg (das hat gut funktioniert)
  • convert pic1-jpg.jpg 805X972 + 34 + 94 pic1-jpg-crop.jpg (dies ergab den gleichen Fehler wie für png wie unten gezeigt)

Ich arbeite an Mac OSX El Capitan und alles andere im Terminal funktioniert einwandfrei. ImageMagick wurde bereits installiert.

Wenn ich renne:

$ 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 

Ich bekomme:

konvertieren: Image '805X972 + 34 + 94' kann nicht geöffnet werden: Keine solche Datei oder Verzeichnis @ Fehler/blob.c/OpenBlob/2702.

convert: Kein Dekodierungsdelegat für dieses Bildformat @ @ error/const.c/ReadImage/504.

kein Dekodierungsdelegat für dieses Bildformat @ @ error/const.c/ReadImage/504

In den anderen Beiträgen zu diesem Thema bekommen die Leute 

no decode delegate für dieses Bildformat `PNG 'konvertieren

Oder ähnlich (außer mit ihrem Bildtyp oder Dateinamen und Bildtyp)

Meines sagt jedoch nichts über den Bilddateityp aus ...

Ich habe nicht versucht, ImageMagick zu deinstallieren und dann manuell aus Quellen zu installieren, da ich nicht sehr zuversichtlich bin ... (diese Lösung wurde gezeigt: https://stackoverflow.com/a/34633084/5398660 )

Weiß jemand, was los sein könnte?

Kann mir auch jemand helfen, den Teil @ error/const.c/ReadImage/504 zu interpretieren? Ich betrachte den Code für const.c , bin mir aber nicht sicher, ob ich nützliche Informationen erhalten kann, um mein Problem zu lösen (ich weiß nur ein bisschen C)

Vielen Dank!

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

reparierte es für mich auf dem mac

13
cfphpflex

In Ordnung, beim Herumspielen habe ich die Lösung herausgefunden und ich schreibe sie hier für andere Leute, die auf dieses Problem stoßen könnten:

Anscheinend ist das nicht/nicht mehr für mich der Weg, ein Bild mit ImageMagick zu konvertieren. Auch wenn diese Verwendung gezeigt wird hier hat es für mich mit El Capitan nicht funktioniert (vielleicht ist es das Betriebssystem?).

Anstatt zu verwenden

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

Der richtige Befehl, der funktioniert, ist:

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

Das heißt, der Befehl lautet:

konvertiere image.ext -crop height Xwidth + positionX + positionY * imagecropped.ext

Mehr finden Sie hier . Aus der Beschreibung auf dieser ImageMagick-Seite war ich verwirrt über das Beispiel, in dem convert rose: -crop enthalten ist. Sie können es jedoch einfach so verwenden, wie ich es oben erwähnt habe.

2
Montag

Meine zwei Cents zu werfen, da auch ich in den letzten Tagen mit diesem Problem zu kämpfen hatte. Ich hatte keine Probleme mit der Ausführung von ImageMagick-Befehlen auf meinem lokalen Computer, erhielt jedoch die von OP erwähnte Fehlermeldung, als ich den Befehl von einem Tomcat-Server aus ausführte, der in der Azure Cloud ausgeführt wird. 

Ich könnte die Ursache ermitteln, indem Sie den folgenden Befehl ausführen:

convert -list format

Auf meinem lokalen Computer würde eine ziemlich lange Liste aller unterstützten Formate zurückgegeben werden, auf Kudu (Azure CLI-Tool) ein leeres Ergebnis. Dies bedeutet, dass ImageMagick den Pfad zu den für die Verarbeitung erforderlichen DLL -Dateien nicht gefunden hat.

In meinem Fall wurde das Problem einfach durch eine fehlende Konfiguration in Azure verursacht:

  • Das Fehlen des ImageMagick-Stammordners in der Systemumgebungsvariablen% PATH%
  • Das Fehlen einer Umgebungsvariablen "MAGICK_HOME" (auf den Stammordner Ihres ImageMagick-Installationsverzeichnisses gesetzt)
  • Das Fehlen einer Umgebungsvariablen "MAGICK_CODER_MODULE_PATH" (auf den oben genannten Ordner +/modules/coders setzen)

ANMERKUNG: Für Personen, bei denen dieses Problem auch in Azure auftritt, können Sie die Antwort in this SO anzeigen. Dort wird erläutert, wie eine Umgebungsvariable mithilfe einer XDT-Transformation hinzugefügt wird.

1
SND

Ich habe dieselbe Fehlermeldung erhalten, weil ich einige Anführungszeichen übersehen hatte. 

Wenn Sie Bilder mit convert -draw mit Anführungszeichen kombinieren, muss das gelieferte Bild in Anführungszeichen eingeschlossen werden.

Kein Dekodierungsdelegat für dieses Bildformat @ @ error/const.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                  

Wenn ich in den Anführungszeichen um myForeground hinzufügte, verschwand das Problem. Was für ein mieser Fehler! 

1
lfender6445

Ein alternativer Imagemagick-Befehl wäre:

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

oder wie bereits erwähnt

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

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

Im Allgemeinen bevorzuge ich die Verwendung von x (Kleinbuchstaben) anstelle von X (Großbuchstaben) zwischen Breite und Höhe, um das Lesen zu erleichtern. Aber entweder funktioniert.

0
fmw42

Ich musste dieses Problem auch heute in einer Konvertierungsoperation lösen, bei der ein anderes Farbraumprofil angewendet wurde.

Es scheint, dass der Konvertierungsbefehl von imagick von der Dateierweiterung des Dateinamens des Profils abhängig ist. In meinem Fall war es eine temporäre Datei ohne Suffix, die dieselbe Fehlermeldung aus dem Fragetitel auslöste

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

Durch Hinzufügen des richtigen Suffix zum Profildateinamen wird das Problem behoben:

(vorausgesetzt ICC-Format)

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