We can use this command to label each image by its name:
montage -label '%t' -size 512x512 "./img/*.*[120x90]" -geometry +5+5 photo.png
I want to label images by a list of strings, which is written in a text file. Docs say:
If the first character of string is @, the image label is read from a file titled by the remaining characters in the string. Labels in a file are literal, no embedded formatting characters are recognized.
But I could not use a file to provide label. I use a command like this:
montage -label @un.txt -size 512x512 "./img/*.*[120x90]" -geometry +5+5 photo.png
Above, un.txt
is the name of text file in ./img/
path. This is a sample result:
In the result, all images are labeled with the string @un.txt
instead of content of un.txt
. Also I get this error in terminal
:
montage.im6: improper image header `./img/un.txt' @
error/txt.c/ReadTXTImage/429
If I copy un.txt
to the current (.
) directory and run above command again, I will get this image (there is no label) and below error:
montage.im6: improper image header `./img/un.txt' @
error/txt.c/ReadTXTImage/429.
montage.im6: not authorized `@un.txt' @
error/property.c/InterpretImageProperties/2959.
With attention to this answer, I found it is probably related to the vulnerability discovered in ImageMagick (here), so I updated my site policy file by removing
<policy domain="path" rights="none" pattern="@*" />
line from/etc/ImageMagick/policy.xml
. Nowmontage
reads from file.