You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.1KB

  1. import sys
  2. from os.path import join
  3. import numpy
  4. from PIL import Image
  5. py3map = map
  6. map = lambda *args, **kwargs: list(py3map(*args, **kwargs))
  7. if __name__ == '__main__':
  8. spec = sys.argv[1]
  9. out = sys.argv[2]
  10. print('jean luc control')
  11. for line in open(spec, 'r').readlines():
  12. l = line.split(',')
  13. fname, coords = l[0], map(int, l[1:])
  14. i = Image.open(fname)
  15. w = max(coords[0::2]) - min(coords[0::2])
  16. h = max(coords[1::2]) - min(coords[1::2])
  17. mw = (max(coords[0::2]) + min(coords[0::2])) / 2
  18. mh = (max(coords[1::2]) + min(coords[1::2])) / 2
  19. data = list(zip(coords[::2], coords[1::2]))
  20. def coord_order(coord):
  21. x, y = coord
  22. score = 0
  23. score += 2 * int(x > mw)
  24. score += int(y > mh)
  25. return score
  26. data = list(sorted(data, key=coord_order))
  27. tl, bl, tr, br = data
  28. data = [tl, bl, br, tr]
  29. data = sum(map(list, data), [])
  30. ii = i.transform((w, h), Image.QUAD, data=data, resample=Image.BILINEAR)
  31. ii.save(join(out, fname))
  32. del i
  33. del ii