libvips/test/test_thumbnail.sh

61 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
# resize a 1000x1000 image to every size in [500,1000] with every interpolator
# and check for black lines
# see https://github.com/jcupitt/libvips/issues/131
# set -x
. ./variables.sh
# make a 1000x1000 mono test image
echo building test image ...
vips extract_band $image $tmp/t1.v 1
vips replicate $tmp/t1.v $tmp/t2.v 2 2
vips extract_area $tmp/t2.v $tmp/t1.v 10 10 1000 1000
# is a difference beyond a threshold? return 0 (meaning all ok) or 1 (meaning
# error, or outside threshold)
break_threshold() {
diff=$1
threshold=$2
return $(echo "$diff > $threshold" | bc -l)
}
for interp in nearest bilinear bicubic lbb nohalo vsqbs; do
size=1000
while [ $size -gt 499 ]; do
printf "testing $interp, size to $size ... "
vipsthumbnail $tmp/t1.v -o $tmp/t2.v --size $size --interpolator $interp
if [ $(vipsheader -f width $tmp/t2.v) -ne $size ]; then
echo failed -- bad size
exit
fi
if [ $(vipsheader -f height $tmp/t2.v) -ne $size ]; then
echo failed -- bad size
exit
fi
vips project $tmp/t2.v $tmp/cols.v $tmp/rows.v
min=$(vips min $tmp/cols.v)
if break_threshold $min 0; then
echo failed -- has a black column
exit
fi
min=$(vips min $tmp/rows.v)
if break_threshold $min 0; then
echo failed -- has a black row
exit
fi
echo ok
size=$(($size-1))
done
done