Podemos alterar as dimensões de uma imagem (representada como uma matriz de tipo numpy array) utilizando a seguinte função:

def imresize(arr, newsize, interp='bicubic', mode=None):
    arr = asarray(arr)
    im = toimage(arr,mode=mode)
    if type(newsize) is types.IntType:
        newsize = float(newsize)
    if type(newsize) is types.FloatType:
        newsize = (im.size[0] * newsize, im.size[1] * newsize)
    else:
        newsize = (newsize[1], newsize[0])
    func = {'nearest':0,'bilinear':2,'bicubic':3,'cubic':3}
    im = im.resize(newsize,resample=func[interp])
    return fromimage(im)

No caso, o primeiro parâmetro arr precisa ser uma matriz. newsize deve ser um inteiro ou ponto flutuante, indicando a proporção do redimensionamento, ou uma dupla contendo as novas largura e altura. O parâmetro interp indica qual algoritmo utilizado na interpolação.