1#!/usr/bin/python3 2 3import sys 4import pyvips 5 6# import logging 7# logging.basicConfig(level = logging.DEBUG) 8 9a = pyvips.Image.new_from_file(sys.argv[1]) 10 11 12def should_equal(test, a, b): 13 if abs(a - b) > 0.01: 14 print('%s: seen %g and %g' % (test, a, b)) 15 sys.exit(1) 16 17 18def bandsplit(a): 19 return [a.extract_band(i) for i in range(0, a.bands)] 20 21 22# test operator overloads 23 24# addition 25b = a + 12 26should_equal('add constant', a.avg() + 12, b.avg()) 27 28b = a + [12, 0, 0] 29x = map(lambda x: x.avg()) 30bandsplit(a) 31y = map(lambda x: x.avg()) 32bandsplit(b) 33x[0] += 12 34should_equal('add multiband constant', sum(x), sum(y)) 35 36b = a + [12, 0, 0] 37b = a + b 38b = 12 + a 39b = [12, 0, 0] + a 40 41b = a - 12 42b = a - [12, 0, 0] 43b = a - b 44b = 12 - a 45b = [12, 0, 0] - a 46 47b = a * 12 48b = a * [12, 1, 1] 49b = a * b 50b = 12 * a 51b = [12, 1, 1] * a 52 53b = a / 12 54b = a / [12, 1, 1] 55b = 12 / a 56b = [12, 1, 1] / a 57b = a / b 58 59b = a // 12 60b = a // [12, 1, 1] 61b = 12 // a 62b = [12, 1, 1] // a 63b = a // b 64 65b = a % 12 66b = a % [12, 1, 1] 67b = a % b 68 69b = a ** 12 70b = a ** [12, 1, 1] 71b = 12 ** a 72b = [12, 1, 1] ** a 73b = a ** b 74 75b = a << 12 76b = a << [12, 1, 1] 77b = a << b 78 79b = a >> 12 80b = a >> [12, 1, 1] 81b = a >> b 82 83b = a & 12 84b = a & [12, 1, 1] 85b = 12 & a 86b = [12, 1, 1] & a 87b = a & b 88 89b = a | 12 90b = a | [12, 1, 1] 91b = 12 | a 92b = [12, 1, 1] | a 93b = a | b 94 95b = a ^ 12 96b = a ^ [12, 1, 1] 97b = 12 ^ a 98b = [12, 1, 1] ^ a 99b = a ^ b 100 101b = -a 102b = +a 103b = abs(a) 104b = ~a 105