09-调整图像大小
19.2.4 调整图像大小
resize() 方法在 Image 对象上调用,返回指定宽度和高度的一个新 Image 对象。它接收两个整数的元组作为参数,表示返回图像的新高度和宽度。在交互式环境中输入以下代码:
>>> from PIL import Image
>>> catIm = Image.open('zophie.png')
❶ >>> width, height = catIm.size
❷ >>> quartersizedIm = catIm.resize((int(width / 2), int(height / 2)))
>>> quartersizedIm.save('quartersized.png')
❸ >>> svelteIm = catIm.resize((width, height + 300))
>>> svelteIm.save('svelte.png')
这里,我们将 catIm.size 元组中的两个值赋给变量 width 和 height ❶。使用 width 和 height ,而不是 catIm.size[0] 和 catIm.size[1] ,这可以让接下来的代码更易读。
第一个 resize() 调用传入 int(width / 2) 作为新宽度,传入 int(height / 2) 作为新高度❷,因此 resize() 返回的 Image 对象具有原始图像的一半长度和宽度,是原始图像大小的1/4。 resize() 方法的元组参数中只允许使用整数,这就是为什么需要调用 int() 对两个除以2的值取整。
这个大小调整保持了相同比例的宽度和高度,但传入 resize() 的新宽度和高度不必与原始图像成比例。 svelteIm 变量保存了一个 Image 对象,宽度与原始图像相同,但高度增加了300像素❸,让Zophie显得更苗条。
请注意, resize() 方法不会在原图上修改 Image 对象,而是返回一个新的 Image 对象。