使用 Python 调整图像大小

开发 后端
我喜欢 Python,而且我已经学了一段时间了。前段时间,我写了一个 Python 脚本,在这个脚本中,我需要调整一堆图片的大小,同时保持长宽比(比例)不变。于是我四处寻找,发现了 Pillow,这是一个 Python 图像库,也是一个叫做 PIL 的旧库的“友好复刻”。

[[375019]]

快速解释如何在 Python 中调整图像大小,同时保持相同的长宽比。

我喜欢 Python,而且我已经学了一段时间了。前段时间,我写了一个 Python 脚本,在这个脚本中,我需要调整一堆图片的大小,同时保持长宽比(比例)不变。于是我四处寻找,发现了 Pillow,这是一个 Python 图像库,也是一个叫做 PIL 的旧库的“友好复刻”。

要安装 Pillow,请使用 Python 的 pip 模块:

  1. $ python3 -m pip install Pillow

按宽度缩放

这是一个使用 Pillow 模块来调整图片大小的基本脚本:

  1. from PIL import Image
  2.  
  3. basewidth = 300
  4. img = Image.open('fullsized_image.jpg')
  5. wpercent = (basewidth / float(img.size[0]))
  6. hsize = int((float(img.size[1]) * float(wpercent)))
  7. img = img.resize((basewidth, hsize), Image.ANTIALIAS)
  8. 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 保存。当然,你不必这么做。如果你想,你可以使用相同的文件名将调整后的图片覆盖全尺寸的图片。

按高度缩放

如果高度是固定的,而宽度是按比例变化的,那也基本差不多,你只需要把东西换一下:

  1. from PIL import Image
  2.  
  3. baseheight = 560
  4. img = Image.open('fullsized_image.jpg')
  5. hpercent = (baseheight / float(img.size[1]))
  6. wsize = int((float(img.size[0]) * float(hpercent)))
  7. img = img.resize((wsize, baseheight), Image.ANTIALIAS)
  8. img.save('resized_image.jpg')

注意 basewidth 现在换成了 baseheight,因为高度是固定的。在第三行中,我们在计算高度百分比,所以我们需要 img.size[1] 而不是 img.size[0]size 属性是一个元组,包含宽度和高度,单位是像素,size[0] 指的是第一个元组元素,也就是宽度,size[1] 是第二个元素,也就是高度。第 4 行也有这样的切换,size[0] 代表宽度,size[1] 代表高度。 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2021-02-20 09:27:36

Python编程语言机器学习

2021-09-13 09:30:09

Linux调整图像ImageMagick

2016-05-18 14:20:12

LinuxgThumb图片

2009-02-20 11:01:38

Vista字体调整

2010-02-02 17:18:16

Python图像处理

2013-08-14 09:42:40

虚拟硬盘硬盘大小限制

2013-10-09 15:45:08

Windows SerHyper-v

2013-03-08 11:03:17

PowerShellVHDResizer虚拟磁盘

2023-11-15 13:04:30

Python提取表格

2010-01-27 14:39:58

Android图片大小

2010-04-09 15:15:01

Oracle SGA

2009-12-16 14:40:40

Linux调整虚拟机硬

2021-10-22 05:52:27

数据库调整大小容量

2009-06-26 08:41:45

LinuxUbuntu通知机制

2022-05-06 08:26:23

GwenviewLinux照片

2024-05-15 15:27:39

2022-05-23 08:23:51

图片处理项目AVIF

2011-03-11 14:07:51

Ubuntu 11.0

2020-10-22 16:48:30

LinuxLVM逻辑卷调整

2024-03-15 09:32:47

线程池应用程序性能
点赞
收藏

51CTO技术栈公众号