如何使用pyvips将图片调整到指定的宽高尺寸
pyvips指定宽高缩放的实现方法
完全可以实现该需求,常用两种实现方式:
方式1:手动计算缩放比例配合resize方法
适合需要自定义缩放、裁剪/补边逻辑的场景,步骤如下:
- 读取图片,获取原始宽高参数
import pyvips # 读取图片,sequential模式适合单流程处理,读取速度更快 img = pyvips.Image.new_from_file("你的输入图片路径", access="sequential") original_width = img.width original_height = img.height target_width = 你需要的宽度 target_height = 你需要的高度
- 计算缩放比例:
- 等比例不拉伸场景:取宽高缩放比的较小值,保证缩放后的图片完全覆盖目标尺寸或者完全适配目标尺寸,之后再按需裁剪多余部分或者添加padding补边
- 允许拉伸场景:分别计算宽高缩放比,直接调用
resize和vscale分别对水平和垂直方向做缩放
- 处理完成后保存即可:
img.write_to_file("你的输出图片路径")
方式2:直接调用内置thumbnail方法(更推荐)
pyvips内置的thumbnail方法原生支持直接指定目标宽高,不需要手动计算比例,还会自动处理EXIF旋转信息,适配性更强:
- 等比例缩放,输出尺寸不超过指定宽高(默认行为):
resized_img = pyvips.Image.thumbnail("你的输入图片路径", target_width, height=target_height)
- 强制拉伸,完全匹配指定宽高:
resized_img = pyvips.Image.thumbnail("你的输入图片路径", target_width, height=target_height, size="force")
- 等比例缩放后居中裁剪,刚好填充指定宽高:
resized_img = pyvips.Image.thumbnail("你的输入图片路径", target_width, height=target_height, crop="centre")
内容的提问来源于stack exchange,提问作者d4riush
相关产品推荐
相关产品推荐

