summaryrefslogtreecommitdiff
path: root/anonpic.sh
blob: 5684bf1f3a9308e1c1bcfe94ec640bab014d3f1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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
contact: Jan Huwald // Impressum