diff options
Diffstat (limited to 'anonpic.sh')
-rwxr-xr-x | anonpic.sh | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/anonpic.sh b/anonpic.sh new file mode 100755 index 0000000..5684bf1 --- /dev/null +++ b/anonpic.sh @@ -0,0 +1,56 @@ +#!/bin/sh -e + +function die() { + echo -e "$*" >&2 + exit 1 +} + +function r() { + echo $(($RANDOM % $1)) +} + +max=$# +cur=1 + +[ $max -gt 0 ] || die "Usage:\n[IMG_PREFIX=your_prefix] $0 img1.jpg img2.jpg ..." +[ -x "$(which convert)" ] || die "ImageMagick is not installed" +[ -x "$(which jhead)" ] || die "jhead is not installed" + +while [ $# -gt 0 ]; do + dst="$IMG_PREFIX$(seq -w $cur $max|head -n1).jpg" + echo -e "[$((100*cur/max))%]\t$1\t-> $dst" + + [ -f "$1" ] || die "$1 does not exist" + (! [ -e "$dst" ]) || die "$dst already exists" + + read W H <<EOF + $(identify $1 |cut -f3 -d\ |tr x \ ) +EOF + + [ $W -ge 100 ] && [ $H -ge 100 ] || die "image is too small" + + if [ $W -ge 1000 ]; then DW=$((W / 100)); else DW=10; fi + if [ $H -ge 1000 ]; then DH=$((H / 100)); else DH=10; fi + + W=$(($W-1)) + H=$(($H-1)) + + convert $1 \ + -colorspace RGB \ + -distort Perspective "$( + ( echo $(r $DW) $(r $DH) 0 0 + echo $(($W - $(r $DW))) $(r $DH) $W 0 + echo $(r $DW) $(($H - $(r $DH))) 0 $H + echo $(($W - $(r $DW))) $(($H - $(r $DH))) $W $H + ) | tr " \n" ", ")" \ + -filter gaussian -define filter:support=5 -define filter:sigma=0.5 \ + -attenuate 2 +noise Uniform \ + -resize 50% \ + -colorspace sRGB \ + "$dst" + + jhead -purejpg -q "$dst" || die "removing meta-data failed" + + cur=$(($cur + 1)) + shift +done |