6 def read_image(in_file):
8 image = imageio.imread(in_file) / 255.
11 linear = image < .0031308 * 12.92
12 image[linear] /= 12.92
13 image[~linear] = ((image[~linear] + .055) / 1.055) ** 2.4
17 def write_image(out_file, image):
18 image = numpy.copy(image)
21 linear = image < .0031308
22 image[linear] *= 12.92
23 image[~linear] = 1.055 * image[~linear] ** (1. / 2.4) - .055
26 image[image < 0.] = 0.
27 image[image > 1.] = 1.
30 numpy.round(image * 255.).astype(numpy.uint8)
33 if __name__ == '__main__':
37 print(f'usage: {sys.argv[0]:s} in_file out_file')
40 out_file = sys.argv[2]
42 write_image(out_file, read_image(in_file))