code: def generate_thumbnail(self, thumbnail_options, high_resolution=False,
                             silent_template_exception=False):
          
          thumbnail_options = self.get_options(thumbnail_options)
          orig_size = thumbnail_options['size']  # remember original size
          # Size sanity check.
          min_dim, max_dim = 0, 0
          for dim in orig_size:
              try:
                  dim = int(dim)
              except (TypeError, ValueError):
                  continue
              min_dim, max_dim = min(min_dim, dim), max(max_dim, dim)
          if max_dim == 0 or min_dim < 0:
              raise exceptions.EasyThumbnailsError(
                  "The source image is an invalid size (%sx%s)" % orig_size)
  
          if high_resolution:
              thumbnail_options['size'] = (orig_size[0] * 2, orig_size[1] * 2)
          image = engine.generate_source_image(
              self, thumbnail_options, self.source_generators,
              fail_silently=silent_template_exception)
          if image is None:
              raise exceptions.InvalidImageFormatError(
                  "The source file does not appear to be an image")
  
          thumbnail_image = engine.process_image(image, thumbnail_options,
                                                 self.thumbnail_processors)
          if high_resolution:
              thumbnail_options['size'] = orig_size  # restore original size
  
          filename = self.get_thumbnail_name(
              thumbnail_options,
              transparent=utils.is_transparent(thumbnail_image),
              high_resolution=high_resolution)
          quality = thumbnail_options['quality']
          subsampling = thumbnail_options['subsampling']
  
          img = engine.save_image(
              thumbnail_image, filename=filename, quality=quality,
              subsampling=subsampling)
          data = img.read()
  
          thumbnail = ThumbnailFile(
              filename, file=ContentFile(data), storage=self.thumbnail_storage,
              thumbnail_options=thumbnail_options)
          thumbnail.image = thumbnail_image
          thumbnail._committed = False
  
          return thumbnail
docs: Return an unsaved ``ThumbnailFile`` containing a thumbnail image.
  
          The thumbnail image is generated using the ``thumbnail_options``
          dictionary.