python之pillow库基本使用

安装它很简单 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')

python之pillow库基本使用_第1张图片

在做图像处理时基本上是把彩色图片转换成黑白二值图像

  • 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) #粘贴

 

你可能感兴趣的:(python之pillow库基本使用)