Python根据面积匹配两图最佳大小

问题描述

foreground.png
在这里插入图片描述

background1.png
在这里插入图片描述
background2.png
在这里插入图片描述




解决方案

  1. 找出面积较大图片,等待缩小
  2. 比较宽优先和高优先的面积
  3. 调整高或宽
from PIL import Image


def match_size(image1, image2):
    '''匹配两图,根据面积返回等比调整宽高后的两图'''
    (width1, height1), (width2, height2) = image1.size, image2.size
    area1, area2 = width1 * height1, width2 * height2
    width, height, large = (width1, height1, image2) if area1 < area2 else (width2, height2, image1)  # 调整大图
    _width, _height = large.size  # 大图宽高
    area_width, area_height = _width * height, _height * width  # 宽优先和高优先面积
    _width, _height = (width, width / _width * _height) if area_width > area_height else (
        height / _height * _width, height)
    size = (int(_width), int(_height))
    image1, image2 = (image1, image2.resize(size)) if area1 < area2 else (image1.resize(size), image2)  # 调整尺寸
    return image1, image2


background1 = Image.open('background1.png')  # 背景图1
background2 = Image.open('background2.png')  # 背景图2
foreground = Image.open('foreground.png')  # 前景图
background1, foreground = match_size(background1, foreground)
background2, foreground = match_size(background2, foreground)
print(foreground.size, background1.size, background2.size)
# (400, 400) (400, 307) (307, 400)




参考文献

  1. Pillow (PIL) 文档
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XerCis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值