将图像调整为给定边界区域的最简单方法是什么?

将图像调整为给定边界区域的最简单方法是什么?,第1张

图像调整为给定边界区域的最简单方法是什么?

您需要在调整大小之前正确裁剪图像。基本思想是确定源图像的最大矩形区域,该区域的纵横比(宽高比)与缩略图图像相同,然后在调整为缩略图尺寸之前将其周围的任何多余部分修剪(裁剪)。这是一个函数,它将计算此类裁剪区域的大小和位置:

def cropbbox(imagewidth,imageheight, thumbwidth,thumbheight):    """ cropbbox(imagewidth,imageheight, thumbwidth,thumbheight)        Compute a centered image crop area for making thumbnail images.          imagewidth,imageheight are source image dimensions          thumbwidth,thumbheight are thumbnail image dimensions        Returns bounding box pixel coordinates of the cropping area        in this order (left,upper, right,lower).    """    # determine scale factor    fx = float(imagewidth)/thumbwidth    fy = float(imageheight)/thumbheight    f = fx if fx < fy else fy    # calculate size of crop area    cropheight,cropwidth = int(thumbheight*f),int(thumbwidth*f)    # for centering use half the size difference of the image and the crop area    dx = (imagewidth-cropwidth)/2    dy = (imageheight-cropheight)/2    # return bounding box of centered crop area on source image    return dx,dy, cropwidth+dx,cropheight+dyif __name__=='__main__':    print("===")    bbox = cropbbox(1024,768, 128,128)    print("cropbbox(1024,768, 128,128): {}".format(bbox))    print("===")    bbox = cropbbox(768,1024, 128,128)    print("cropbbox(768,1024, 128,128): {}".format(bbox))    print("===")    bbox = cropbbox(1024,1024, 96,128)    print("cropbbox(1024,1024, 96,128): {}".format(bbox))    print("===")    bbox = cropbbox(1024,1024, 128,96)    print("cropbbox(1024,1024, 128,96): {}".format(bbox))

确定裁剪区域后,调用

im.crop(bbox)
,然后调用
im.thumbnail(...)
返回的图像。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5644995.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存