#!/bin/bash # Turn wallpapers into film #set -x # Parameters # WALLAPERMAKER /* {{{ */ WALLPAPERMAKER () { # Copy the last file blank-rename.sh lowercase LOSTFILE=`mktemp` LASTFILE=`ls *.jpg|tail -n 1` COLOUR=`convert $LASTFILE -filter Box -resize 1x1 -depth 8 txt:-| tail -n 1|awk '{print $NF}'` WALLPAPER=wallpaper.jpg WIDE=0 test -f $WALLPAPER && exit cp $LASTFILE $LOSTFILE #Randomize the angle#{{{ RAND_ANGEL () { ANGLE=$RANDOM let "ANGLE %= 16" let "ANGLE = $ANGLE + 2" COIN=$RANDOM let "COIN %= 2" if [ "$COIN" = "1" ] then let "ANGLE = 0 - $ANGLE" fi # ANGLE=`perl -e 'print rand() * 30 - 15'` } #}}} #Randomize the number#{{{ RAND_NUM () { NUM=$RANDOM let "NUM %= 49" # NUM=`printf %02d $NUM` } #}}} #Random Name #{{{ RAND_NAME () { NAME1="Kodak houghiVision 100" NAME2="Kodak Plus-X" NAME3="Fuji PF-100C" NAME4="Fuji Color" NAME5="Agfa XRS 400" NAME6="Kodak Ektachrome X" NAME7="Portra 400NC" NAME8="FUJI NHG ASA 400" NAME9="Anscochrome T-100 Superior" NAMES="NAME1 NAME2 NAME3 NAME4 NAME5 NAME6 NAME7 NAME8 NAME9" NAME=($NAMES) NUM_NAME=${#NAME[*]} NAME=${NAME[$((RANDOM%NUM_NAME))]} NAME=$NAME NAME="${!NAME}" } #}}} #{{{ RAND_NUM RAND_NAME # Turn the files and resize them for FILE in *.jpg do WIDTH=`jhead $FILE|grep ^Res|awk '{print $3}'` HEIGHT=`jhead $FILE|grep ^Res|awk '{print $5}'` if [ "$WIDTH" -gt "$HEIGHT" ] then nice mogrify -rotate 270 $FILE fi #Add the file nice mogrify -resize 250 $FILE nice gimp --batch-interpreter plug-in-script-fu-eval -i -d -b '(batch-slide "'$FILE'" "'"$NAME"'" "'"$NUM"'")' -b '(gimp-quit 0)' >> /dev/null 2>&1 let "NUM = $NUM + 1" done #Join them rm `echo $LASTFILE|sed 's/\.jpg/\.png/'` nice montage -background transparent -tile 1x5 -geometry 400x420+0+0 *.png film.png # Put a nice shadow on them nice gimp --batch-interpreter plug-in-script-fu-eval -i -d -b '(batch-drop-shadow "film*.png")' -b '(gimp-quit 0)' >> /dev/null 2>&1 # Place them in a random angle and add them together COMMAND="" for FILE in `ls film*.png` do RAND_ANGEL nice mogrify -background transparent -resize x1400 -rotate $ANGLE $FILE COMMAND="$COMMAND $FILE -geometry +${WIDE}+0 -composite" let "WIDE = $WIDE +200" done # Make the wallpaper mv $LOSTFILE $LASTFILE nice mogrify -resize 800x800 $LASTFILE convert $LASTFILE -bordercolor white -border 40 -bordercolor grey60 -border 1 -background none -rotate `perl -e 'print rand() * 30 - 15'` -background none -flatten wallpaper1.png nice gimp --batch-interpreter plug-in-script-fu-eval -i -d -b '(batch-drop-shadow "wallpaper1.png")' -b '(gimp-quit 0)' >> /dev/null 2>&1 convert -size 1920x1200 xc:${COLOUR} $COMMAND wallpaper2.png convert -size 1920x1200 wallpaper2.png wallpaper1.png -geometry +1000+100 -composite wallpaper.jpg rm *.png #}}} } #}}} COUNT=0 #Remove empty directories find -depth -type d -empty -exec rmdir '{}' \; # OK, lets go for DIR in `find . -type d|grep '/'` do let "COUNT = $COUNT +1" cd $DIR echo "XXXX $DIR XXXX $COUNT XXXX" WALLPAPERMAKER # mv wallpaper.jpg ../`printf %04d $COUNT`_film_`date +%Y%m%d`.jpg mv wallpaper.jpg ../`printf %04d $COUNT`_film.jpg cd .. done