code: def convert_image_data_to_pil(psd, apply_icc=True, **kwargs):
      
      from PIL import Image, ImageOps
      header = psd.header
      size = (header.width, header.height)
      channels = []
      for channel_data in psd.image_data.get_data(header):
          channels.append(_create_channel(size, channel_data, header.depth))
      alpha = _get_alpha_use(psd)
      mode = get_pil_mode(header.color_mode.name)
      if mode == 'P':
          image = Image.merge('L', channels[:get_pil_channels(mode)])
          image.putpalette(psd.color_mode_data.interleave())
      elif mode == 'MULTICHANNEL':
          image = channels[0]  # Multi-channel mode is a collection of alpha.
      else:
          image = Image.merge(mode, channels[:get_pil_channels(mode)])
      if mode == 'CMYK':
          image = image.point(lambda x: 255 - x)
      if apply_icc and 'ICC_PROFILE' in psd.image_resources:
          image = _apply_icc(image, psd.image_resources.get_data('ICC_PROFILE'))
      if alpha and mode in ('L', 'RGB'):
          image.putalpha(channels[-1])
      return _remove_white_background(image)
docs: Convert ImageData to PIL Image.
  
      .. note:: Image resources contain extra alpha channels in these keys:
          `ALPHA_NAMES_UNICODE`, `ALPHA_NAMES_PASCAL`, `ALPHA_IDENTIFIERS`.