2013-07-31 2 views
2

У меня есть сценарий bash, который автоматически помещает водяные знаки в каждое изображение в папке.Автоматический водяной знак - Действие папки

WATERMARK="$HOME/Dropbox/logo_bw.png" 
if [ ! -e "watermarked_tmp" ] 
then 
mkdir watermarked_tmp 
fi 
#loop inside all the images in folder 
for image in *.jpg *.JPG *.jpeg *.JPEG *.png *.PNG 
do 
if [ ! -e "$image" ] # Check if file exists. 
then 
continue 
fi 
#Retrieve size of the image and divide the lenght by 2 
size=`identify -format %[fx:w/4,279] $image` 
#Apply the watermark and create a new image in the "watermarked" subfolder 
composite -dissolve 10% -quality 100 -gravity SouthEast -background none \($WATERMARK -geometry ${size} \) ${image} watermarked_tmp/${image} 
done 

Я хочу создать действие Папки с этого кода с помощью Automator. Кто-нибудь знает, как передать текущий каталог и их файлы? Я пытался сделать, но он не на линии for image in *.jpg *.JPG *.jpeg *.JPEG *.png *.PNG

ответ

4

вход Set пасс в качестве аргументов и использовать цикл как for f; do:

watermark=~/a.png 
d=~/watermarked_temp 
mkdir -p $d 
shopt -s nocasematch 
for f; do 
    [[ $f =~ .*\.(jpe?g|png)$ ]] || continue 
    target="$d/${f##*/}" 
    size=$(identify -format '%[fx:w/4,279]' "$f") 
    composite -dissolve 10% -gravity SouthEast\ 
    \($watermark -geometry $size \) "$f" -quality 100 "$target" 
done 
+1

спасибо за полный сценарий. Он выполняется без проблем, но он создает только папку watermarked_temp. Никаких водяных знаков внутри. – Adrian

+0

Вы правы, я редактировал сценарий. Вам также может потребоваться использовать полные пути для 'identity' и' compose'. – user495470

+0

Да, сейчас он работает. :) Еще один вопрос: есть ли способ сделать каталог watermarked_temp в текущем каталоге? – Adrian

Смежные вопросы