1.1 PIL:Python图像处理类库
from PIL import Image
img = Image.open('Husky.jpg')
# 看看这货长什么样子
img
# 看看它的大小
print('The size of this image is:{0}'.format(img.size))
The size of this image is:(1588, 1257)
# 这货太大了,把它变得小巧些
img.thumbnail((700, 700))
img
真正改变大小的方法应该是resize(),下面介绍下thumbnail和resize的异同
- 相同点:两者都接受元组(宽,高)作为新图片的大小;
- 不同点:
- thumbnail是快速生成缩略图的方法,img.thumbnail()直接在img上操作,不可逆;new_img = img.resize(),resize方法会生成一个新的PIL对象并返回
- thumbnail生成缩略图是按比例缩放的;而resize是完全按照给定的元组的大小缩放
- thumbnail传入的元组不可超过当前图片的大小
# 验证第3点
print("执行thumbnail方法之前img的大小为:{0}".format(img.size))
# 输入的元组大小大于(700, 554)
img.thumbnail((1000, 1000))
print("执行thumbnail方法之后img的大小为:{0}".format(img.size))
# 如果输入元组的大小小于(700, 554),验证第2点
img.thumbnail((500, 500))
print("再次缩放后img的大小为:{0}".format(img.size))
执行thumbnail方法之前img的大小为:(700, 554)
执行thumbnail方法之后img的大小为:(700, 554)
再次缩放后img的大小为:(500, 395)
# 用resize图片变为原来的大小,但是可以看见清晰度比原来低了好几档
img.resize((1588, 1257))
img
# 得到灰度图
img_grey = img.convert('L')
img_grey
# 使用crop()方法可以裁剪指定区域
box = (100, 30, 490, 395)
region = img_grey.crop(box)
# 看起来更帅了,box是一个四元组。图片以左上角为(0,0)点,box中的4个数字分别代表左上角的x值,左上角的y值,右下角的x值,右下角的y值
region
# 不能让它这么帅,rotate方法可以让其逆时针旋转一个角度
rotate_img = region.rotate(90)
rotate_img
# 对原本的图片操作,将旋转的部分粘贴回原图片
img.paste(rotate_img, box)
# 可以看见图片中有些黑色部分,那是因为box截取的区域并不是一个正方形,宽大于高,旋转过来时原来的高度自然匹配不上原来的宽度
img