| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | 
							- import base64
 
- import io
 
- import numpy as np
 
- import PIL.ExifTags
 
- import PIL.Image
 
- import PIL.ImageOps
 
- def img_b64_to_arr(img_b64):
 
-     f = io.BytesIO()
 
-     f.write(base64.b64decode(img_b64))
 
-     img_arr = np.array(PIL.Image.open(f))
 
-     return img_arr
 
- def img_arr_to_b64(img_arr):
 
-     img_pil = PIL.Image.fromarray(img_arr)
 
-     f = io.BytesIO()
 
-     img_pil.save(f, format='PNG')
 
-     img_bin = f.getvalue()
 
-     if hasattr(base64, 'encodebytes'):
 
-         img_b64 = base64.encodebytes(img_bin)
 
-     else:
 
-         img_b64 = base64.encodestring(img_bin)
 
-     return img_b64
 
- def img_data_to_png_data(img_data):
 
-     with io.BytesIO() as f:
 
-         f.write(img_data)
 
-         img = PIL.Image.open(f)
 
-         with io.BytesIO() as f:
 
-             img.save(f, 'PNG')
 
-             f.seek(0)
 
-             return f.read()
 
- def apply_exif_orientation(image):
 
-     try:
 
-         exif = image._getexif()
 
-     except AttributeError:
 
-         exif = None
 
-     if exif is None:
 
-         return image
 
-     exif = {
 
-         PIL.ExifTags.TAGS[k]: v
 
-         for k, v in exif.items()
 
-         if k in PIL.ExifTags.TAGS
 
-     }
 
-     orientation = exif.get('Orientation', None)
 
-     if orientation == 1:
 
-         # do nothing
 
-         return image
 
-     elif orientation == 2:
 
-         # left-to-right mirror
 
-         return PIL.ImageOps.mirror(image)
 
-     elif orientation == 3:
 
-         # rotate 180
 
-         return image.transpose(PIL.Image.ROTATE_180)
 
-     elif orientation == 4:
 
-         # top-to-bottom mirror
 
-         return PIL.ImageOps.flip(image)
 
-     elif orientation == 5:
 
-         # top-to-left mirror
 
-         return PIL.ImageOps.mirror(image.transpose(PIL.Image.ROTATE_270))
 
-     elif orientation == 6:
 
-         # rotate 270
 
-         return image.transpose(PIL.Image.ROTATE_270)
 
-     elif orientation == 7:
 
-         # top-to-right mirror
 
-         return PIL.ImageOps.mirror(image.transpose(PIL.Image.ROTATE_90))
 
-     elif orientation == 8:
 
-         # rotate 90
 
-         return image.transpose(PIL.Image.ROTATE_90)
 
-     else:
 
-         return image
 
 
  |