Question Combinez plusieurs images en utilisant ImageMagick


Je voudrais combiner plusieurs images en une seule image en utilisant ImageMagick. Pour expliquer un peu mieux, je veux que le résultat ressemble à ceci:

C'est-à-dire que j'ai un certain nombre de captures d'écran, et je veux les transformer en une seule image avec les images originales les unes sur les autres.

En faisant une recherche sur Google, j'ai rencontré la commande «composite», mais je ne sais pas si, et dans ce cas, comment l'utiliser pour obtenir le résultat souhaité.


144
2018-05-30 18:30


origine


Avez-vous vérifié Exemples de couches d'images multi-images imagemagick? - timbooo
stackoverflow.com/questions/12076293/... - Ciro Santilli 新疆改造中心 六四事件 法轮功


Réponses:


Pour n'importe quel nombre de fichiers d'entrée nommé in-<quelque chose>.jpg:

convert -append in-*.jpg out.jpg

Afin d’avoir des fichiers spécifiques ajoutés ou de sauter des numéros au lieu d’obtenir le "glob" complet, vous pouvez mentionner explicitement les fichiers d’entrée et append commande après

convertir in-1.jpg in-5.jpgN.jpg + ajoute out-in1-plus-in5-and-inN.jpg

Vous pouvez utiliser -append (au lieu de +append) pour le collage vertical.

Ou:

montage -mode concatenate -tile 1x in-*.jpg out.jpg

va également créer un fichier out.jpg qui contient une concaténation verticale des images sources.

convert

Pour une concaténation simple dans une seule ligne ou colonne, le append option du convert l'outil est suffisant. Notez que -append concatène toutes les images verticalement, créant une colonne avec n lignes, et +append concaténer horizontalement, créant une ligne avec n colonnes.

(Voir ImageMagick: Options de ligne de commande.)

montage

Pour avoir un meilleur contrôle de la mise en page, nous aurions besoin de montage outil. montage -mode concatenate va coller les images d'entrée ensemble comme le append option et -tile 1x contrôle la mise en page à appliquer.

tile suit le format colonnes×des rangs, mais l'un ou l'autre côté peut être absent et montage saura comment répondre aux contraintes.

Nous utilisons 1x (exactement une colonne avec un nombre quelconque de lignes) ici pour obtenir le même effet que -append. Sans pour autant -tile 1x, il rejoindrait les images comme +append, par défaut à -tile x1 (un nombre quelconque de colonnes sur une ligne).

(Voir Exemples ImageMagick: Montage, tableaux d'images.)


218
2018-05-30 19:37



Merci. append fonctionne bien, mais j'estime que le montage est cassé: si les polices ghostscript ne sont pas installées, elles sortiront, même si vous n'annotez pas les images. Les polices doivent être chargées à la demande, pas à l'avance. - Bram
@Bram: Je ne le savais pas et suis tout à fait d'accord. Savez-vous si GraphicsMagick se comporte de la même manière? - peth
Comment pourrais-je sauter chaque autre image? Je voudrais analyser un sous-ensemble - in-1, in-3, in-5, etc. - Mike Robinson
@MikeRobinson convert -append `counter=0; for x in in-*; do if [[ $(($counter % 2)) == 0 ]]; then echo $x; fi; counter=$((counter + 1)); done` out.jpg devrait faire le travail - gozzilli
@peth: Votre réponse commence par un exemple convert commande qui a -append  avant les noms de fichiers d'entrée. Un utilisateur anonyme a ajouté un exemple avec +append  après les noms de fichiers d'entrée. Sont-ils tous deux valables? La commande est-elle significative? - Scott