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
|