J'aimerais combiner plusieurs images en une seule image à l'aide d'ImageMagick. Pour expliquer un peu mieux, je veux que le résultat ressemble à ceci:
C’est-à-dire que j’ai plusieurs captures d’écran et que je veux les transformer en une seule image avec les images originales les unes sur les autres.
En cherchant sur Google, je suis tombé sur la commande 'composite', mais je ne sais pas si, et dans ce cas, comment l'utiliser pour obtenir le résultat souhaité.
imagemagick
image-processing
Petter
la source
la source
Réponses:
Pour n'importe quel nombre de fichiers d'entrée nommés :
in-<something>.jpg
Afin d’ajouter des fichiers spécifiques ou d’ignorer des numéros au lieu d’obtenir le "glob" complet, vous pouvez mentionner explicitement les fichiers d’entrée et mettre la
append
commande par la suite.Vous pouvez utiliser
-append
(au lieu de+append
) pour coller verticalement.Ou:
créera également un fichier
out.jpg
contenant une concaténation verticale des images sources.convert
Pour une concaténation simple dans une seule ligne ou une seule colonne, l'
append
option de l'convert
outil est suffisante. Notez que-append
concatène toutes les images verticalement, créant une colonne de n lignes et+append
concaténant horizontalement, créant une ligne de n colonnes.(Voir ImageMagick: Options de ligne de commande .)
montage
Pour mieux contrôler la mise en page, nous aurions besoin de l'
montage
outil.montage -mode concatenate
collera les images d'entrée ensemble comme l'append
option et-tile 1x
contrôlera la mise en page à appliquer.tile
suit le format colonnes × lignes , mais l’un ou l’autre des côtés peut être manquant etmontage
déterminera comment respecter les contraintes.Nous utilisons
1x
(exactement une colonne avec un nombre quelconque de lignes) ici pour obtenir le même effet que-append
. Sans-tile 1x
cela, les images seraient jointes comme par+append
défaut-tile x1
(nombre quelconque de colonnes sur une ligne).(Voir Exemples ImageMagick: Montage, Tableaux d'images .)
la source
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.convert -tile 2x2
commande etc. lira les fichiers par ordre alphabétique . Cela signifie que les morceaux nommés0-10
seront lus comme0,10,1,2,..,9
. Il m'a fallu presque 2 heures pour réaliser quelque chose d'aussi basique.ls *
, renverra ces valeurs dans cet ordre.