Beschriften Sie Bilder aus einer Textdatei mit dem Montagebefehl

Beschriften Sie Bilder aus einer Textdatei mit dem Montagebefehl

Mit diesem Befehl können wir jedes Bild mit seinem Namen beschriften:

montage -label '%t' -size 512x512 "./img/*.*[120x90]" -geometry +5+5 photo.png

Ich möchte Bilder mit einer Liste von Zeichenfolgen beschriften, die in eine Textdatei geschrieben wird.Ärzte sagen:

Wenn das erste Zeichen der Zeichenfolge @ ist, wird die Bildbeschriftung aus einer Datei gelesen, deren Titel die restlichen Zeichen der Zeichenfolge enthält. Beschriftungen in einer Datei sind wörtlich zu verstehen, eingebettete Formatierungszeichen werden nicht erkannt.

Ich konnte jedoch keine Datei verwenden, um das Label bereitzustellen. Ich verwende einen Befehl wie diesen:

montage -label @un.txt -size 512x512 "./img/*.*[120x90]" -geometry +5+5 photo.png 

Oben un.txtsteht der Name der Textdatei im ./img/Pfad. Dies ist ein Beispielergebnis:

4x4-Gruppe von Bildern mit dem Dateinamen @un.txt unter jedem Bild

Im Ergebnis werden alle Bilder mit der Zeichenfolge @un.txtstatt mit dem Inhalt von beschriftet un.txt. Außerdem erhalte ich diesen Fehler in terminal:

montage.im6: improper image header `./img/un.txt' @
error/txt.c/ReadTXTImage/429

Wenn ichKopieren un.txtin das aktuelle ( .)-Verzeichnis gehe und den obigen Befehl erneut ausführe, erhalte ich dieses Bild (es gibt keine Bezeichnung) und den folgenden Fehler:

4x4 Bildgruppe wie zuvor, kein Text

montage.im6: improper image header `./img/un.txt' @
error/txt.c/ReadTXTImage/429. 

montage.im6: not authorized `@un.txt' @
error/property.c/InterpretImageProperties/2959.

Antwort1

Mit Aufmerksamkeit aufdiese Antwort, fand ich heraus, dass es wahrscheinlich mit der in ImageMagick entdeckten Sicherheitslücke zusammenhängt (Hier), daher habe ich meine Site-Policy-Datei aktualisiert, indem ich <policy domain="path" rights="none" pattern="@*" />die Zeile aus entfernt habe /etc/ImageMagick/policy.xml. montageLiest jetzt aus der Datei.

verwandte Informationen