code: def colorspace(im, bw=False, replace_alpha=False, **kwargs):
      
      if im.mode == 'I':
          # PIL (and pillow) have can't convert 16 bit grayscale images to lower
          # modes, so manually convert them to an 8 bit grayscale.
          im = im.point(list(_points_table()), 'L')
  
      is_transparent = utils.is_transparent(im)
      is_grayscale = im.mode in ('L', 'LA')
      new_mode = im.mode
      if is_grayscale or bw:
          new_mode = 'L'
      else:
          new_mode = 'RGB'
  
      if is_transparent:
          if replace_alpha:
              if im.mode != 'RGBA':
                  im = im.convert('RGBA')
              base = Image.new('RGBA', im.size, replace_alpha)
              base.paste(im, mask=im)
              im = base
          else:
              new_mode = new_mode + 'A'
  
      if im.mode != new_mode:
          im = im.convert(new_mode)
  
      return im
docs: Convert images to the correct color space.
  
      A passive option (i.e. always processed) of this method is that all images
      (unless grayscale) are converted to RGB colorspace.
  
      This processor should be listed before :func:`scale_and_crop` so palette is
      changed before the image is resized.
  
      bw
          Make the thumbnail grayscale (not really just black & white).
  
      replace_alpha
          Replace any transparency layer with a solid color. For example,
          ``replace_alpha='#fff'`` would replace the transparency layer with
          white.