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