#!/bin/bash # Make deeper wallpaper #set -x #Parameters {{{ WIDTH=1920 HEIGHT=1200 LAYOUTS="Indent Shadow Raise Border" COUNT=`find $DIR -type f|wc -l` # First do an ubdatedb. Then do `imagick_type_gen > ~/.magick/type.xml` # To search fonts, do the following: # grep -B 3 /home/extra/fonts ~/.magick/type.xml|grep name|grep -v fullname|awk -F\" '{print $2}' . ~/bin/fontlist.txt TMP_DIR=`mktemp -d` TMP="$TMP_DIR/temp.jpg" trap "rm -rf $TMP_DIR* " 0 1 2 3 5 6 9 14 15 #}}} # LAYOUT : Text Layout {{{ Indent() { convert -size "$WIDTH"x250 xc:transparent -font $FONT -pointsize 72 \ -fill black -annotate +24+154 "$NAME" \ -fill white -annotate +26+156 "$NAME" \ -fill $COLOUR -annotate +25+155 "$NAME" \ $TMP_DIR/name.png } Shadow () { convert -background none -stroke \#5e5e5e -fill $COLOUR \ -font $FONT -pointsize 72 label:"$NAME" -trim \ \( +clone -background black -shadow 80x3+3+3 \) +swap \ -background none -layers merge +repage \ $TMP_DIR/name.png } Raise () { convert -size "$WIDTH"x250 xc:transparent -font $FONT -pointsize 72 \ -fill white -annotate +24+154 "$NAME" \ -fill black -annotate +26+156 "$NAME" \ -fill $COLOUR -annotate +25+155 "$NAME" \ $TMP_DIR/name.png } Border () { convert -size "$WIDTH"x250 xc:transparent -font $FONT -pointsize 72 \ -draw "fill black text 27,157 '$NAME' \ text 25,158 '$NAME' \ text 23,157 '$NAME' \ text 22,155 '$NAME' \ text 23,153 '$NAME' \ text 25,152 '$NAME' \ text 27,153 '$NAME' \ text 28,155 '$NAME' \ fill $COLOUR text 25,155 '$NAME' " \ $TMP_DIR/name.png } # /* }}} */ #The Name {{{ ADDNAME () { if [ "$QUASI" != "quasi_unknown" ] then #Random font FONT=($FONTS) NUM_FONT=${#FONT[*]} FONT=${FONT[$((RANDOM%NUM_FONT))]} echo $FONT >> ~/tmp/fontcounter #Random layout LAYOUT=($LAYOUTS) NUM_LAYOUT=${#LAYOUT[*]} LAYOUT=${LAYOUT[$((RANDOM%NUM_LAYOUT))]} # Random split of name COIN=$RANDOM let "COIN %= 2" if [ "$COIN" = "1" ] then NAME2=`echo $NAME|awk '{print $NF}'` NAME1=`echo $NAME|awk -F"$NAME2" '{print $1}'` # Last part NAME=$NAME2 $LAYOUT mogrify -trim -bordercolor transparent -border 2 $TMP_DIR/name.png mv $TMP_DIR/name.png $TMP_DIR/name2.png # First part NAME=$NAME1 $LAYOUT mogrify -trim -bordercolor transparent -border 2 $TMP_DIR/name.png mv $TMP_DIR/name.png $TMP_DIR/name1.png montage -label '' $TMP_DIR/name1.png -label '' $TMP_DIR/name2.png -tile 1x2 -mode concatenate \ -background transparent $TMP_DIR/name.png else $LAYOUT fi #Resize text mogrify -trim $TMP_DIR/name.png convert -background transparent -splice 50x50 $TMP_DIR/name.png $TMP_DIR/name.png convert -gravity southeast -background transparent -splice 0x50 $TMP_DIR/name.png $TMP_DIR/name.png NAME_SIZE=`identify $TMP_DIR/name.png|awk '{print $3}'|awk -Fx '{print $1}'` if [ "$NAME_SIZE" -gt "$PIC_SIZE" ] then mogrify -resize $PIC_SIZE $TMP_DIR/name.png fi # Place the text PLACINGS="NorthWest SouthWest North South NorthEast SouthEast" PLACING=($PLACINGS) NUM_PLACING=${#PLACING[*]} PLACING=${PLACING[$((RANDOM%NUM_PLACING))]} composite -gravity $PLACING $TMP_DIR/name.png $TMP $TMP fi test -f $TMP_DIR/name.png && rm $TMP_DIR/name.png } #}}} BORDER () #{{{ { mogrify -resize 1770x1050 $FILE COLOUR=`convert $FILE -filter Box -resize 1x1 -depth 8 txt:-| \ head -n 2| tail -n 1|awk '{print $NF}'` COLOR=`echo $COLOUR|sed 's/,/ /g'|awk -Frgb '{print $NF}'` gimp -i -c -d -b "(batch_fuzzy_border \"$FILE\" '$COLOR 30 FALSE 4.5 TRUE 75 )" -b "(gimp-quit 0)" >> /dev/null 2>&1 convert -mattecolor ${COLOUR} -frame 25x25+0+25 $FILE $FILE convert -bordercolor ${COLOUR} -border 50 $FILE $FILE } #}}} RESTIMAGE () #{{{ { PIC_SIZE=`jhead $FILE|grep ^Resolution|awk '{print $3}'` if [ "$PIC_SIZE" == "1920" ] then convert -size "$WIDTH"x"$HEIGHT" xc:${COLOUR} $TMP composite -gravity Center $FILE $TMP $TMP ADDNAME mv $TMP $FILE else let PIC_SIZE="$WIDTH - $PIC_SIZE" convert -size "$PIC_SIZE"x"$HEIGHT" xc:${COLOUR} $TMP ADDNAME montage $TMP $FILE -tile 2x1 -mode concatenate $FILE fi } #}}} for FILE in `ls *.jpg` do #Some info echo "Still $COUNT to go. Now working on `echo $FILE| \ awk -F/ '{print $NF}'`" let COUNT=COUNT-1 #Run stuff NAME="" NAME=`jhead $FILE |grep ^Comment|awk -F": " '{print $NF}'` QUASI=`echo $FILE|awk -F_ '{print $1 "_" $2}'` BORDER RESTIMAGE jhead -cl "$NAME" $FILE done exit gqview .