快速解释如何在 Python 中调整图像大小,同时保持相同的长宽比。
我喜欢 Python,而且我已经学了一段时间了。前段时间,我写了一个 Python 脚本,在这个脚本中,我需要调整一堆图片的大小,同时保持长宽比(比例)不变。于是我四处寻找,发现了 Pillow,这是一个 Python 图像库,也是一个叫做 PIL 的旧库的“友好复刻”。
要安装 Pillow,请使用 Python 的 pip
模块:
$ python3 -m pip install Pillow
这是一个使用 Pillow 模块来调整图片大小的基本脚本:
from PIL import Image
basewidth = 300
img = Image.open('fullsized_image.jpg')
wpercent = (basewidth / float(img.size[0]))
hsize = int((float(img.size[1]) * float(wpercent)))
img = img.resize((basewidth, hsize), Image.ANTIALIAS)
img.save('resized_image.jpg')
这几行 Python 代码使用 Pillow 将一张图片 (fullsized_image.jpg
) 调整为 300 像素的宽度,宽度在变量 basewidth
中设置,高度则与新的宽度成比例。比例高度的计算方法是:确定 300 像素占原宽度 (img.size[0]
) 的百分比,然后将原高度(img.size[1]
) 乘以该百分比。所得的高度值保存在变量 hsize
中。
如果你需要不同的图片宽度,你可以将 basewidth
改为任何其他数字。另外,请注意,因为我想保留全尺寸的图片 (fullsized_image.jpg
),因此我将调整后的图片以一个不同的名称 resized_image.jpg
保存。当然,你不必这么做。如果你想,你可以使用相同的文件名将调整后的图片覆盖全尺寸的图片。
如果高度是固定的,而宽度是按比例变化的,那也基本差不多,你只需要把东西换一下:
from PIL import Image
baseheight = 560
img = Image.open('fullsized_image.jpg')
hpercent = (baseheight / float(img.size[1]))
wsize = int((float(img.size[0]) * float(hpercent)))
img = img.resize((wsize, baseheight), Image.ANTIALIAS)
img.save('resized_image.jpg')
注意 basewidth
现在换成了 baseheight
,因为高度是固定的。在第三行中,我们在计算高度百分比,所以我们需要 img.size[1]
而不是 img.size[0]
。size
属性是一个元组,包含宽度和高度,单位是像素,size[0]
指的是第一个元组元素,也就是宽度,size[1]
是第二个元素,也就是高度。第 4 行也有这样的切换,size[0]
代表宽度,size[1]
代表高度。
信息化2.0时代提出开展智慧教育创新发展行动。2019年2月,中共中央、国务院印发...
建站 什么 虚拟主机 够用?这要看搭建的是什么类型的网站。比如个人博客类型的网...
在Python语言中有如下3种方法: 成员方法 类方法(classmethod) 静态方法(staticm...
从 10.0.0 版开始,异步迭代器就出现在 Node 中了,在本文中,我们将讨论异步迭...
本文整理自直播《Hologres 数据导入/导出实践-王华峰(继儒)》 视频链接: https:/...
【51CTO.com快译】 数据可视化工具不断发展,提供更强大的功能,同时改善可访问...
摘要 元旦期间 订单业务线 告知 推送系统 无法正常收发消息,作为推送系统维护者...
Docker生成新镜像版本的两种方式 There are two ways Docker can generate new m...
2021年3月24日,主题为《数据的世界,世界的数据》的星环科技2021春季新品发布会...
前提条件 请您在购买前确保已完成注册和充值。详细操作请参见 如何注册公有云管...