-
Notifications
You must be signed in to change notification settings - Fork 17
/
generate_test_samples_regular.py
61 lines (53 loc) · 2.67 KB
/
generate_test_samples_regular.py
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
57
58
59
60
61
from PIL import Image
from glob import glob
import os
import time
DATA_DIR = './examples/'
OUT_DIR = './test_images'
DATA_TMPL = '*'
MIN_BLOCK_SIZE = 5
out_fromats = [
{'format': 'jpeg', 'params': {'quality': 20}},
{'format': 'jpeg', 'params': {'quality': 40}},
{'format': 'jpeg', 'params': {'quality': 60}},
{'format': 'jpeg', 'params': {'quality': 80}},
{'format': 'jpeg', 'params': {'optimize': True}},
{'format': 'webp', 'params': {'quality': 20}},
{'format': 'webp', 'params': {'quality': 40}},
{'format': 'webp', 'params': {'quality': 60}},
{'format': 'webp', 'params': {'quality': 80}},
{'format': 'webp', 'params': {'lossless': True}}
]
img_files = sorted(glob(os.path.join(DATA_DIR, DATA_TMPL)))
if not os.path.exists(OUT_DIR):
os.makedirs(OUT_DIR)
def main():
for img_file in img_files:
print '[{}] [INFO] Processing \'{}\':'.format(time.strftime("%H:%M:%S"), os.path.basename(img_file))
img = Image.open(img_file)
print '[{}] [INFO] input image format: {} / {} / {}'.format(time.strftime("%H:%M:%S"),
img.format, img.mode, img.size)
height_mp = int(round(img.height / 32.0))
width_mp = int(round(img.width / 32.0))
w_add = h_add = 0
if width_mp > height_mp:
w_add = width_mp - height_mp
else:
h_add = height_mp - width_mp
for mp in range(MIN_BLOCK_SIZE, min(height_mp, width_mp) + 1):
img_res = img.resize((32 * (mp + w_add), 32 * (mp + h_add)))
print '[{}] [INFO] handling resolution \'{}x{}\':'.format(time.strftime("%H:%M:%S"),
img_res.width, img_res.height)
for out_frm in out_fromats:
out_name = '{}_size={}x{},codec={}'.format(os.path.basename(img_file).rsplit('.')[0],
img_res.width, img_res.height, out_frm['format'])
for p, v in out_frm['params'].iteritems():
out_name += ',{}={}'.format(p, v)
print '[{}] [INFO] generating \'{}\''.format(time.strftime("%H:%M:%S"), out_name)
img_res.save(os.path.join(OUT_DIR, out_name), format=out_frm['format'], **out_frm['params'])
out_name = '{}_size={}x{}_orig.ppm'.format(os.path.basename(img_file).rsplit('.')[0], img_res.width,
img_res.height)
img_res.save(os.path.join(OUT_DIR, out_name), format='ppm')
print '[{}] [INFO] Done!'.format(time.strftime("%H:%M:%S"))
if __name__ == '__main__':
main()