All pastes #143261 Raw Edit

Miscellany

public text v1 · immutable
#143261 ·published 2006-08-21 23:24 UTC
rendered paste body
#!/bin/sh

#
# add a drop shadow to an image
#
#

#############################

function usage {
    echo "Usage : $(basename $0) [ .. options .. ] image [out_image]"
    echo
    echo " Adds a shadow to the image."
    echo " options :"
    echo "   -x : x offset "
    echo "   -y : y offset"
    echo "   -r : radius"
    echo "   -b : blur"
    exit -1
}


#############################


[ -z "$1" ] && usage


## default values 
X_OFFSET=8
Y_OFFSET=8
RADIUS=15
BLUR=80

## parse options
while getopts x:y:r:b: option
do
  case $option in
      x) X_OFFSET=$OPTARG ;;
      y) Y_OFFSET=$OPTARG ;;
      r) RADIUS=$OPTARG ;;
      b) BLUR=$OPTARG ;;
      \?) usage ;;
  esac
done
shift $(($OPTIND - 1)) 

## arguments after options
[ -n "$1" ] && FILE=$1
[ -n "$2" ] && FILE_OUT=$2




## verify input file existence
if [ -z "$FILE" ] || [ ! -e "$FILE" ]
    then usage
fi

## backup file if no output_file
if [ -z "$FILE_OUT" ]
then 
    cp $FILE $FILE.bak
    FILE_OUT=$FILE
fi



##
## main traitment
##

## script scheme (last line uses shell variables)
cat > $FILE.tmp <<EOF
(define (my-drop-shadow input-file output-file x_offset y_offset radius blur)
  (let* ((image (car (gimp-file-load RUN-NONINTERACTIVE input-file input-file)))
	 (drawable (car (gimp-image-get-active-layer image))))
    (script-fu-drop-shadow image drawable x_offset y_offset radius '(0 0 0) blur TRUE)
    (gimp-image-merge-visible-layers image TRUE)
    (gimp-image-flatten image)
    (set! drawable (car (gimp-image-get-active-layer image))) 
    (gimp-file-save RUN-NONINTERACTIVE image drawable output-file output-file)
    )
   (gimp-quit TRUE)
  )
(my-drop-shadow "$FILE" "$FILE_OUT" $X_OFFSET $Y_OFFSET $RADIUS $BLUR) 
EOF


#SCRIPT_SCM=$(cat $FILE.tmp)
#rm -f $FILE.tmp
#echo "$SCRIPT_SCM" 
cat $FILE.tmp | gimp -i -b - 1>/dev/null 2>/dev/null
rm -f $FILE.tmp