【说站】python如何实现图像等比缩放
python如何实现图像等比缩放
说明
1、初始化目标尺寸的幕布,所有值都是一样的。
2、计算出放缩比例。
把原图中较长的边放缩到目标尺寸大小.
3、使短边也能按此比例放缩,得到的图片就不会变形。
4、缩放后的图像必须小于等于目标尺寸。
因此必须能够粘贴在幕布的中心,这样幕布中没有被覆盖的地方就会自动变成留白,省去了填充步骤。
5、得到想要的图片。
实例
import numpy as np from PIL import Image def resize(img, size): # 先创建一个目标大小的幕布,然后将放缩好的图片贴到中央,这样就省去了两边填充留白的麻烦。 canvas = Image.new("RGB", size=size, color="#7777") target_width, target_height = size width, height = img.size offset_x = 0 offset_y = 0 if height > width: # 高 是 长边 height_ = target_height # 直接将高调整为目标尺寸 scale = height_ / height # 计算高具体调整了多少,得出一个放缩比例 width_ = int(width * scale) # 宽以相同的比例放缩 offset_x = (target_width - width_) // 2 # 计算x方向单侧留白的距离 else: # 同上 width_ = target_width scale = width_ / width height_ = int(height * scale) offset_y = (target_height - height_) // 2 img = img.resize((width_, height_), Image.BILINEAR) # 将高和宽放缩 canvas.paste(img, box=(offset_x, offset_y)) # 将放缩后的图片粘贴到幕布上 # box参数用来确定要粘贴的图片左上角的位置。offset_x是x轴单侧留白,offset_y是y轴单侧留白,这样就能保证能将图片填充在幕布的中央 return canvas img= Image.open('1.jpg') target__size=(500,300) # 目标尺寸:宽为500,高为300 res = resize(img,target__size) res.save('new.jpg')
以上就是python实现图像等比缩放的方法,希望对大家有所帮助。更多Python学习指路:python基础教程
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!
从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!
本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。
本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。
若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。