code: def decode_image(data, image_type):
      
      bytes_data = BytesIO(data)
      if image_type.is_tiff_format():
          image = tiff.imread(bytes_data)
      else:
          image = np.array(Image.open(bytes_data))
  
          if image_type is MimeType.JP2:
              try:
                  bit_depth = get_jp2_bit_depth(bytes_data)
                  image = fix_jp2_image(image, bit_depth)
              except ValueError:
                  pass
  
      if image is None:
          raise ImageDecodingError('Unable to decode image')
      return image
docs: Decodes the image provided in various formats, i.e. png, 16-bit float tiff, 32-bit float tiff, jp2
          and returns it as an numpy array
  
      :param data: image in its original format
      :type data: any of possible image types
      :param image_type: expected image format
      :type image_type: constants.MimeType
      :return: image as numpy array
      :rtype: numpy array
      :raises: ImageDecodingError