6 def read_image(in_file):
8 image = imageio.imread(in_file) / 255.
11 temp = image if len(image.shape) == 2 else image[:, :, :3] # skip alpha
12 linear = temp < .0031308 * 12.92
14 temp[~linear] = ((temp[~linear] + .055) / 1.055) ** 2.4
18 def write_image(out_file, image):
19 image = numpy.copy(image)
22 temp = image if len(image.shape) == 2 else image[:, :, :3] # skip alpha
23 linear = temp < .0031308
25 temp[~linear] = 1.055 * temp[~linear] ** (1. / 2.4) - .055
28 image[image < 0.] = 0.
29 image[image > 1.] = 1.
32 numpy.round(image * 255.).astype(numpy.uint8)
35 if __name__ == '__main__':
39 print(f'usage: {sys.argv[0]:s} in_file out_file')
42 out_file = sys.argv[2]
44 write_image(out_file, read_image(in_file))