读取图片并显示
from PIL import Image
im = Image.open("flower-631765_1280.jpg","r")
print(im.size,im.format,im.mode)
im.show()
#如果要显示多张图片,则需要plt
输出为:((1280, 751), 'JPEG', 'RGB')
知识点:
- mode表示图像的模式,定义了像素类型还有图像深度等,常见的有RGB,HSV等。一般来说'L'(luminance)表示灰度图像,'RGB'表示真彩图像,'CMYK'表示预先压缩的图像。
- im.size输出的是(宽,高)
保存图像
im.save("flower.png",'png')
创建缩略图
im.thumbnail((100,100),resample=Image.BICUBIC)
知识点:
- 第一个参数是指定的缩略图的大小
- 第二个是采样的,有
Image.BICUBIC
,Image.LANCZOS
,Image.BILINEAR
,Image.NEAREST
这四种采样方法。默认是Image.BICUBIC
resize
im_resize = im.resize((200,200))
函数的表达为:resize(size,resample,box)
知识点:
- size是转换之后的大小
- resample是重新采样使用的方法,仍然有
Image.BICUBIC
,Image.LANCZOS
,Image.BILINEAR
,Image.NEAREST
这四种采样方法,默认是Image.NEAREST
旋转图像
#逆时针旋转
im.rotate(90).save(r'rotate90.png')
im.rotate(270).save(r'rotate270.png')
im.rotate(180).save(r'rotate180.png')
im.rotate(20).save(r'rotate20.png')
im.rotate(20, expand=True).save(r'rotate20_expand.png')
主要来看一下最后两行代码不同:
旋转图像
im.transpose(Image.FLIP_LEFT_RIGHT).save(r'transepose_lr.png') #水平翻转
im.transpose(Image.FLIP_TOP_BOTTOM).save(r'transepose_tb.png') #垂直翻转
裁剪矩形区域
box = (100,100,300,700) #(左上角x,左上角y,右下角x,右下角y) x是宽度方向,y是高度方向
region = im.crop(box)