Pillow库是python中比较方便,好用的处理图片的库之一。
### 安装pillow
pip install pillow
#### 如果你使用的是Anaconda,其自带也pillow 可以使用conda进行更新
conda update xxx
首先导入相关库
from PIL import Image, ImageEnhance, ImageDraw, ImageFilter
1.查看图片基本信息
house = Image.open('./images/house.png')
#打印图片信息
print('format: {} size: {} mode:{}'.format(house.format,house.size,house.mode))
house.show() # 显示图片
format: PNG size: (640, 470) mode:RGBA
format:图片的格式信息
size:图片在尺寸信息
mode:图片的模式(RGB、RGBA、JEPG等)
2.创建图片缩略图
house_t=house.copy() # 复制一份图片
house_t.thumbnail((200,200)) #创建 200*200的缩略图
house_t.save('./images/house_t_200.png') #保存缩略图
3.修改图片大小
house_r = Image.open('./images/house.png').resize((800,600))
house_r.show()
house_r.save('./images/house_r.png') # 保存修改后的图片
4.旋转图片
house_r=house_r.rotate(45) # 旋转45度
house_r.show()
5.裁剪图片
house_crop = house.crop([100,100,300,280])
house_crop.show()
house_crop.save('./images/house_crop.png')
6.图片水平翻转
ImageOps 库包含了对于图像的一些基本操作方法,例:图像对比度,裁剪、灰度色彩、亮度等。
from PIL import ImageOps
house_m = ImageOps.mirror(house_r)
house_m.show()
7.垂直翻转图像
filp_house = ImageOps.flip(house_2)
filp_house.show()
8.向图像添加边框
image_boder = ImageOps.expand(house.copy(),border=20,fill='red')
image_boder.show()
9.图片上绘制图形
ImageDraw模块提供简单的二维图形,可以使用此模块创建新图像、对现有图像进行注释或润色,以及动态生成图形以供Web使用.
image_shape = house.copy()#创建一份图片的copy
#[(250,79),(130,210)] 为左上角坐标、右下角坐标
ImageDraw.Draw(image_shape).rectangle([(250,79),(130,210)],width=5,outline='red')
#[(100,100),(300,450)]直线的起始及终点座标
ImageDraw.Draw(image_shape).line([(100,100),(300,450)],width=5,fill='blue')
image_shape.show()
10.粘贴图片
将tree图片贴到house图片上
tree = Image.open('./images/tree.png').resize((200,200))
house_copy=house.copy()
house_copy.paste(tree,(100,100))
house_copy.show()
11. 调整图像亮度
ImageEnhance模块包含用于图像增强的方法。
dark_sky=Image.open('./images/dark-sky.jpg')
dark_sky.show()
dark_sky = ImageEnhance.Brightness(dark_sky).enhance(2)
dark_sky.show()
12.图像增强过滤器
dark_sky_filter = Image.open('./images/dark-sky.jpg')
dark_sky_filter=dark_sky_filter.filter(ImageFilter.SHARPEN)#锐化图像
# BLUR,CONTOUR,DETAIL,EDGE_ENHANCE,EDGE_ENHANCE_MORE,FIND_EDGES,SHARPEN,
# SMOOTH,SMOOTH_MORE,SHARPEN
dark_sky_filter.show()
13.修改图片颜色
# 修改颜色
house = Image.open('./images/house.png')
print(house.mode)
house.show()
r, g, b, a = house.split()
house_color = Image.merge('RGBA',(a,g,b,r)) #通过将各通道信息对换改变颜色
house_color.show()
14.彩色转换变黑白
# 图像转换为黑白色
house_bw = house.convert('L')
house_bw.show()
15.修改图片透明度
house = Image.open('./images/house.png').resize((800,600))
dark_sky = Image.open('./images/dark-sky.jpg').resize((800,600))
r,g,b,alpha = house.split()
# alpha 透明度
alpha = alpha.point(lambda i: i>0 and 100)
com_image = Image.composite(house,dark_sky,alpha)
com_image.show()
16.使用常量alpha在两个输入图像之间插入来创建新图像
house = Image.open('./images/house.png').resize((800,600))
sun = Image.open('./images/sun.png').resize((800,600))
print(house.mode)
blend = Image.blend(house,sun,0.2)
blend.show()
# rgba与rgb,jpeg不能blend