| import glob | |
| import os, io | |
| import json | |
| import random | |
| from PIL import Image | |
| from tqdm import tqdm | |
| import argparse | |
| json_out_dir = '/path/to/json' | |
| image_in_dir = '/path/to/image_in_dir' | |
| image_out_dir = '/path/to/image_out_dir' | |
| file_list = [] | |
| for root, dirs, files in os.walk(image_in_dir): | |
| for file in files: | |
| file_list.append(os.path.join(root, file)) | |
| file_list = sorted(file_list) | |
| file_count = 0 | |
| now_file_name = image_out_dir + f'patch_{file_count:06d}' | |
| file = open(now_file_name, 'wb') | |
| now_btytes = file.tell() | |
| count_image = 0 | |
| new_data = {} | |
| for image_path in tqdm(file_list): | |
| image_info = {} | |
| btyes = 0 | |
| sizes = [] | |
| with open(image_path, 'rb') as img: | |
| img_data = img.read() | |
| btyes = file.write(img_data) | |
| sizes.append(btyes) | |
| patch_info = { | |
| "patch": now_file_name, | |
| "start_num": now_btytes, "size": sizes, | |
| } | |
| count_image += 1 | |
| now_btytes = file.tell() | |
| if count_image == 10000: | |
| file.close() | |
| file_count += 1 | |
| now_file_name = image_out_dir + f'patch_{file_count:06d}' | |
| file = open(now_file_name, 'wb') | |
| now_btytes = 0 | |
| count_image = 0 | |
| image_info['original_image_path'] = os.path.join(image_path) | |
| image_info['image'] = patch_info | |
| new_data[image_path.split('/')[-1]] = image_info | |
| if count_image == 1: | |
| print(new_data) | |
| file.close() | |
| with open(f'{json_out_dir}/patch_mapping.json', 'w') as f: | |
| json.dump(new_data, f, indent=4) | |