Question Comment passer une liste de fichiers au montage d'ImageMagick?


J'ai un grand nombre de tuiles, avec la convention de dénomination suivante:

A-x-y.jpg

0<=x<=16 &
0<=y<=14

Maintenant je sais que nous pouvons utiliser l'outil Montage dans ImageMagick, pour les fusionner en une seule image.

Idéalement, j'aurais pu utiliser la ligne de commande suivante:

montage *.jpg -geometry +0+0 -tile 17x15 all.jpg

mais mes fichiers sont tels que A-0-0.jpg est directement au-dessus de A-0-1.jpg, qui est au-dessus de A-0-2.jpg et A-1-0.jpg est à droite de A-0 -0.jpg.

Donc, lorsque j'utilise la commande ci-dessus, la commande est incorrecte. J'ai un fichier texte dans le bon ordre. Puis-je utiliser le fichier texte comme entrée pour le montage. Si oui, comment puis-je le faire?


4
2017-07-15 15:27


origine




Réponses:


Dans les nouvelles versions d'ImagMagick (i.e> v6.5.2-1) @ opérateur peut être utilisé comme ceci:

montage @list.txt -geometry +0+0 -tile 17x15 all.jpg

6
2017-07-15 16:04





Il regards comme le montage ne supporte pas l'argument "file with filenames". 

Modifier: @Devdatta a trouvé la syntaxe correcte (voir aussi ici): @filenames.txt. Ainsi, la méthode ci-dessous ne devrait être nécessaire que pour les très anciennes versions des outils ImageMagick.


Mais si vous utilisez Linux ou un système de type Unix, vous pouvez remplacer le ou les arguments du nom de fichier par la sortie d'une commande. De cette façon, vous pouvez utiliser votre fichier avec les noms de fichiers ordonnés:

montage `cat filenames.txt` -geometry +0+0 -tile 17x15 all.jpg

(S'il vous plaît noter les backticks autour de la commande de chat.)

Les sauts de ligne entre les noms de fichiers dans filename.txt ne pas nuire à l'invocation de la commande. Et vous pouvez même utiliser des caractères génériques dans filename.txt, car la substitution de commande précède l’extension du nom de fichier.

Bien entendu, vous pouvez également renommer les fichiers source au préalable pour obtenir l'ordre souhaité.


3
2017-07-15 15:54



Attention, ceci se casse si l'un des noms de fichiers contient des espaces quelconques. - slhck
PS: sous Windows Powershell, la syntaxe suivante pourrait fonctionner (non testée): montage $(cat filenames.txt) -geometry +0+0 -tile 17x15 all.jpg - Dubu
Ceci est également possible sur POSIX. En fait, préféré sur les backticks. - slhck