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的异同

  • 相同点:两者都接受元组(宽,高)作为新图片的大小;
  • 不同点:
    1. thumbnail是快速生成缩略图的方法,img.thumbnail()直接在img上操作,不可逆;new_img = img.resize(),resize方法会生成一个新的PIL对象并返回
    2. thumbnail生成缩略图是按比例缩放的;而resize是完全按照给定的元组的大小缩放
    3. 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

posted @ 2019-02-17 16:08  小王点点  阅读(551)  评论(0编辑  收藏  举报