Rotular imagens de arquivo de texto com comando de montagem

Rotular imagens de arquivo de texto com comando de montagem

Podemos usar este comando para rotular cada imagem pelo seu nome:

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

Quero rotular imagens por uma lista de strings, que está escrita em um arquivo de texto.Os documentos dizem:

Se o primeiro caractere da string for @, o rótulo da imagem será lido de um arquivo intitulado pelos caracteres restantes da string. Os rótulos em um arquivo são literais e nenhum caractere de formatação incorporado é reconhecido.

Mas não pude usar um arquivo para fornecer rótulo. Eu uso um comando como este:

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

Acima un.txtestá o nome do arquivo de texto no ./img/caminho. Este é um exemplo de resultado:

Grupo 4x4 de imagens com nome de arquivo @un.txt em cada uma

No resultado, todas as imagens são rotuladas com a string @un.txtem vez do conteúdo de un.txt. Também recebo este erro em terminal:

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

Se eucópia de un.txtpara o diretório atual ( .) e executar o comando acima novamente, obterei esta imagem (não há rótulo) e o erro abaixo:

Grupo de imagens 4x4 como antes, sem texto

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

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

Responder1

Com atenção paraesta resposta, descobri que provavelmente está relacionado à vulnerabilidade descoberta no ImageMagick (aqui), então atualizei meu arquivo de políticas do site removendo <policy domain="path" rights="none" pattern="@*" />a linha do /etc/ImageMagick/policy.xml. Agora montagelê do arquivo.

informação relacionada