0

django-photologue (1pinax)を使用していて、画像をボックス(100px x 100px)に拡大縮小したいと思います。ポートレート画像は高さ100pxに拡大縮小し、幅は色で塗りつぶす必要があります。

4

1 に答える 1

2

PILは変換行列で使用できます。たとえば、次の関数は1回の操作でサイズ変更と切り抜きを行います。個人的には、色で塗りつぶすよりもトリミングする方が好きですが、必要に応じて調整できます。

def resize_and_crop(im, mask_width=1000, mask_height=1000):
    width, height = im.size
    aspect = 1.0*width/height
    mask_aspect = 1.0*mask_width/mask_height
    if width != mask_width or height != mask_height:
        if aspect > mask_aspect:
            ratio = 1.0*height/mask_height
            imt = im.transform((mask_width, mask_height), 
                                Image.AFFINE, 
                               (ratio, 0, (width-mask_width*ratio)/2, 0, ratio, 0),
                               Image.CUBIC)
        else:
            ratio = 1.0*width/mask_width
            imt = im.transform((mask_width, mask_height), 
                               Image.AFFINE, 
                               (ratio, 0, 0, 0, ratio, (height-mask_height*ratio)/2),
                               Image.CUBIC)
    else:
        imt = im
    return imt
于 2011-02-13T21:15:48.033 に答える