¿Cuál es la forma más sencilla de cambiar el tamaño de una imagen a un área acotada determinada?

Me gustaría crear una función, como:

def generateThumbnail(self, width, height):
     """
     Generates thumbnails for an image
     """
     im = Image.open(self._file)
     im.thumbnail((width, height), Image.ANTIALIAS)
     im.save(self._path + str(width) + 'x' + 
             str(height) + '-' + self._filename, "JPEG")

Donde se puede dar y redimensionar un archivo.

La función actual funciona muy bien, excepto que no se recorta cuando es necesario.

En el caso de que se proporcione una imagen rectangular y se requiera un cambio de tamaño cuadrado (ancho = alto), se deberá realizar un recorte ponderado centrado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta