docs: def process_image(source, processor_options, processors=None):
      """
      Process a source PIL image through a series of image processors, returning
      the (potentially) altered image.
      """
      processor_options = ThumbnailOptions(processor_options)
      if processors is None:
          processors = [
              utils.dynamic_import(name)
              for name in settings.THUMBNAIL_PROCESSORS]
      image = source
      for processor in processors:
          image = processor(image, **processor_options)
      return image