Python如何对图片进行缩放,旋转,翻转,添加文字以及如何截取并粘贴图像到图片中
有时候我们需要批量的对图片进行一些简单的处理,比如说,将一些照片调整为统一的尺寸,或者添加一些简单的文字内容到图片或者截图中,用手机操作或者用PS之类的工具感觉很麻烦。比如最近由于疫情的原因,学校经常需要家长,把健康码,通行码等内容加上名字后,发给学校,每次都要重复的把同样的文字添加到截图上去很不方便。而使用Python,只要写几段代码就可以只用几秒钟就完成,这部分的代码我放到了另一篇文章「通过Python在健康码,行程卡的截图上添加文字内容,省心省力」中,如有需要,请点击查看。
接下来,本文将通过调用Python代码对图片的一些基本操作进行简要说明:
首先,对缩放、旋转和翻转进行简要的介绍
#开始之前,先要导入所需要模块
from PIL import Image, ImageDraw, ImageFont
关于图片的缩放比较容易理解,但是要注意的是,仅调用缩放函数并不会改变当前图像的尺寸,需要通过重新赋值才可以完成缩放内容的传递,官方文档中的说明是,Returns a resized copy of this image. 就是返回一个本图像调整尺寸后的复制内容。关于图片缩放后的尺寸设定,可以参考如下代码,图片尺寸只能是整数:
# 获取图片的原始尺寸,再按一定的比例进行设定
size = (int(img.size[0] * 0.5), int(img.size[1] *0.5))
# 和上一句的意思一样, 上一句是×50%后取整,这里是除2后取整
size = (img.size[0] // 2, img.size[1] // 2)
#设定尺寸为800*600
size = (800,600)
#将图像Img 调整尺寸后 重新赋值给自己,size的内容任选上述一种即可。
img = img.resize(size)
关于图像的旋转,有时候容易出现理解偏差,rotate是旋转,Transpose是变换位置,本文用翻转来指代。这两个功能的说明如下:
img.rotate(90) 是旋转90度,
这里要注意,只是对于图像内容进行旋转,图片文件本身(或者可以理解为画布)并不会旋转。Image.Transpose.ROTATE_90,是翻转90度,通过执行这条语句,整个画布才会翻转。
具体的区别如下图如示,调用这两个功能后也需要重新赋值后才能传递旋转后的内容: