2011-11-01 4 views
1

Bonjour mes amis J'essaie de composer deux images dans un script shell imagemagick mais je rencontre un problème ici. Mon problème est que j'ai deux dossiers. Dans le premier dossier, appelons-le A et le second l'appelle B. Dans les deux dossiers A et B, il y a des images avec le même nom, comme dans le dossier A il y a une image nommée 'a' et le même dossier nommé est dans le dossier B Maintenant, je veux faire les composer avec cette commandeComposer deux images dans shellscript

composite -compose over -geometry +125+25 -background white 
a.png a.png output.png 

Dans cette image de commande d'un dossier nommé « a.png » sera composer avec de la B.png 'dossiers B et la sortie sera « sortie. png'.Maintenant, je peux le faire manuellement un par un en exécutant la commande dans le terminal. Je veux le script shell de celui-ci par lequel je peux faire composer un grand nombre de fichiers. Toute aide et suggestions seront très appréciables.

Répondre

1

Je vais supposer que vous signifiait

composite -compose over -geometry +125+25 -background white A/a.png B/a.png output.png 

et que vous voulez mettre vos résultats dans un répertoire nommé out.

dans les domaines suivants:

for afile in A/* ; do 
    base=$(basename "$afile") 
    composite -compose over -geometry +125+25 -background white "A/$base" "B/$base" "out/$base" 
done 

Les deux caractéristiques de base utilisées ici sont command substitution et la commande basename qui retourne juste la partie du nom de fichier d'un chemin.

+0

Merci pour votre réponse et +1 de moi, mais il montre une erreur comme «impossible d'ouvrir" B/$ base ". Je pense qu'ici seulement A est défini mais B n'est pas défini. Donc, une idée derrière cela? – NewUser

+0

Fonctionne pour moi. Est-ce que votre shell bash? – themel