问题描述
Python读取图片获得按比例缩放后的宽和高
测试图片2.jpg
解决方案
- 使用 PIL 读取原图宽高
- 按比例计算
import os
from PIL import Image
def scale(filePath, width=None, height=None):
"""指定宽或高,得到按比例缩放后的宽高
:param filePath:图片的绝对路径
:param width:目标宽度
:param height:目标高度
:return:按比例缩放后的宽和高
"""
if not width and not height:
width, height = Image.open(filePath).size # 原图片宽高
if not width or not height:
_width, _height = Image.open(filePath).size
height = width * _height / _width if width else height
width = height * _width / _height if height else width
return width, height
filename = os.path.join(os.getcwd(), '2.jpg')
print(scale(filename)) # (400, 225)
print(scale(filename, width=123, height=456)) # (123, 456)
print(scale(filename, width=200)) # (200, 112.5)
print(scale(filename, height=45)) # (80.0, 45)
PS:此函数仅得到按比例缩放后的宽高,产生新图片请自行查阅资料
def scale_resize(image, target_width=500):
"""等比缩放"""
width, height = image.size
if width > target_width:
height = round(target_width * height / width)
width = target_width
size = (width, height)
image = image.resize(size)
return image