安装它很简单 pip install pillow
使用方式:
#python2
import Image
#python3(因为是派生的PIL库,所以要导入PIL中的Image)
from PIL import Image
我用的python3.8所以选第二种
PIL最重要的类是 Image你可以从文件加载图像,或者处理其他图像, 或者从 scratch 创建。
要从文件加载图像 通过 Image 模块的 open() 函数,:
open
from PIL import Image
im = Image.open('f117.jpg')
# 这句话是解决pycharm没有代码提示的
assert isinstance(im, Image.Image)
# 显示图片
im.show()
format,size,mode
format属性定义了图像的格式,如果图像不是从文件打开的,那么该属性值为None;size属性是一个tuple,表示图像的宽和高(单位为像素);mode属性为表示图像的模式,常用的模式为:L为灰度图,RGB为真彩色,CMYK为pre-press图像。如果文件不能打开,则抛出IOError异常。
print(im)
print(f"{im.format}+++{im.size}+++{im.mode}")
#结果:
# # JPEG+++(1024, 680)+++RGB
save
保存操作
im.save('you path')
convert()
convert() 是图像实例对象的一个方法,接受一个 mode 参数,用以指定一种色彩模式,mode 的取值可以是如下几种:
·1(1位像素,黑白,存储1像素/字节)
·L(8位像素,黑白)
·P(8位像素,使用调色板映射到任何其他模式)
·RGB (3x8位像素,原色)
·RGBA (4x8位像素,带透明蒙版的真实颜色)
·CMYK (4x8位像素,分色)
·YCbCr (3x8位像素,彩色视频格式)
·I(32位有符号整数像素)
·F(32位浮点像素)
bw = im.convert('L')
bw.save('tt.jpg')
在做图像处理时基本上是把彩色图片转换成黑白二值图像
resize()
调整图片大小
im.resize()
rotate
图片旋转45度
im.rotate(45)
filter
ImageFilter和ImageEnhance两个类提供了图片的过滤和增强
from PIL import Image, ImageFilter
im = Image.open(‘1.png’)
# 高斯模糊
im.filter(ImageFilter.GaussianBlur)
# 普通模糊
im.filter(ImageFilter.BLUR)
# 边缘增强
im.filter(ImageFilter.EDGE_ENHANCE)
# 找到边缘
im.filter(ImageFilter.FIND_EDGES)
# 浮雕
im.filter(ImageFilter.EMBOSS)
# 轮廓
im.filter(ImageFilter.CONTOUR)
# 锐化
im.filter(ImageFilter.SHARPEN)
# 平滑
im.filter(ImageFilter.SMOOTH)
# 细节
im.filter(ImageFilter.DETAIL)
from PIL import Image,ImageEnhance
im = Image.open('tt.png')
# 这句话是解决pycharm没有代码提示的
assert isinstance(im, Image.Image)
print(im)
#亮度增强
epr = ImageEnhance.Brightness(im)
a = epr.enhance(1.5)
a.show()
#色度增强
epr2 = ImageEnhance.Color(im)
a2 = epr2.enhance(1.5)
a2.show()
#对比度增强
epr3 = ImageEnhance.Contrast(im)
a3 = epr3.enhance(1.5)
a3.show()
#锐度增强
epr4 = ImageEnhance.Sharpness(im)
a4 = epr4.enhance(2)
a4.show()
查看图像直方图
im.histogram()
屏幕截图
im1 = ImageGrab.grab()#不带参数表示全屏幕截图
im2 = ImageGrab.grab([0, 0, 200, 50])#截取屏幕指定区域的图像
im3 = ImageGrab.grab((0, 0, 200, 50))#截取屏幕指定区域的图像
im1.save('xxxxxx1.png')
im2.save('xxxxxx2.png')
im3.save('xxxxxx3.png')
图像裁剪与粘贴
box = (120, 194, 220, 294) #定义裁剪区域
region = im.crop(box) #裁剪
region = region.transpose(Image.ROTATE_180)
im.paste(region, box) #粘贴