2017-08-09 2 views
0

Im essayant de faire de conversion par lots rapide de fichiers comme ceci:ImageMagick et composer lot de fichiers

convert ./src/*.png -set filename: '%t' -gravity West -draw 'image over 0,0 424,600 "./panel.png"' ./dest/%[filename:].png 

qui est assez même comme COMPOSITES:

convert ./src/*.png ./panel.png -set filename: '%t' -gravity +0+0 -composite ./dest/%[filename:].png 

sauf dernier ne crée pas lot de fichiers, juste en faisant un premier fichier crapped. On dirait que c'est bug?

Quelqu'un sait comment le rendre plus correct avec -composite? pour | awk | ls | trouver pour chaque fichier shell n'est pas acceptable - parce qu'ils plus lent que le premier exemple

Répondre

2

Lire dans la liste des fichiers, définissez leurs noms de fichiers de sortie, comprennent l'espace réservé d'image spéciale IM « null », lisez dans votre image de superposition, définissez la géométrie si nécessaire, et composite placerez sur tous les autres images avec "-layers composite". Que "null:" sépare la liste de fichiers d'entrée d'origine de l'image de superposition afin que ImageMagick sache où dans la pile vous voulez commencer à faire le composite.

Essayez quelque chose comme ça ...

convert ./src/*.png -set filename: '%t' null: ./panel.png -layers composite ./dest/%[filename:].png 
+0

Oui, fonctionne comme 'convertir ./src/*.png -set nom de fichier: '% t' null: ./panel.png -geometry + 0 + 0 -layers composite ./dest /% [nom de fichier:]. Png' Merci beaucoup – nvvetal

0

On dirait qu'il est bug?

Pas un bug. Votre seconde commande indique à ImageMagick de consommer tous les fichiers correspondants dans une pile d'images et de les regrouper en un seul.

Vous pouvez essayer la même solution avec l'utilitaire mogrify, mais je crois que ce serait plus simple façon si vous développez le script bash avec une seule boucle for.

for f in $(ls src/*.png) 
do 
    dest=$(basename $f); 
    convert "$f" ./panel.png -gravity West -composite "./dest/$dest" 
done 
+0

Il prend plus de temps :( – nvvetal

+1

Utilisez [Parallel Gnu] (https://www.gnu.org/software/parallel/) si vous avez besoin pour gagner du temps. – emcconville