Python——>PIL库的使用

PIL库的使用

PIL库的概述

PIL库是一个具有强大图像处理能力的第三方库,不仅包含了丰富的像素,色彩操作功能,还可以用于图像归档和批量处理

库名:pillow

下载方式:IDLE通过cmd 输入>pip install pillow;pycharm——>File——>setting——>project,Pythonproject点击加号,找到pillow下载

​ PIL库支持图像存储、显示和处理,它能够处理几乎所有的图片格式,可以完成图像的缩放剪裁叠加、以及向图像添加线条,图像和文字等操作

PIL库主要可以实现图像归档图像处理两方面功能需求

  • 图像归档:对图像进行批处理、生成图像预览、图像格式转换等
  • 图像处理:图像基本处理、像素处理、颜色处理等

PIL库包括21个与图片有关的类

ImageImageChopsImageColorImageCrackCodeImageDrawImageEnhance
ImageFileImageFileI()ImageFilterImageFontImageGLImageGrab
ImagemathImageOpsImagePaletteImagePathImageQtImageSequence
ImageStatImageTkImageWin

PIL库Image类解析

Image类的图像读取和创建方法

方法描述
Image.open(filename)根据参数加载图像文件
Image.new(mode, size, color)根据给定·参数创建一个新的图像
Image.open(StringIO.StringIO(buffer))从字符串中获取图像
Image.frombytes(mode, size, data)根据像素点data创建图像
Image.verify()对图像文件完整性进行检查,返回异常

实例:

from PIL import Image
im = Image.open("D:\\LOL.jpg")

要求在D盘中先有一个名为LOL.jpg名字的文件

Image类的常用属性

属性描述
Image.format标识图像格式或来源,如果图像不是从文件读取,值为None
Image.mode图像的色彩模式,“L"为灰色图像”RGB“为真彩色图像,”CMYK“为出版图像
Image.size图像宽度和高度,单位为像素(px),返回值是二元元组(tuple)
Image.palette调色板属性,返回一个ImagePalette类型

实例:

from PIL import Image
im = Image.open("D:\\LOL.jpg")
print(im.format, im.size, im.mode)
=======================================================================================
JPEG (1280, 768) RGB

Image还能读取序列类图像文件,包括GIFFLIFLCTIFF等格式文件。open()方法打开一个图像时自动加载序列中的第一帧,使用seek()和tell()方法可以在不同帧之间移动。

Image类的·序列图像操作方法

方法描述
Image.seek(frame)跳转并返回图像中的指定帧
Image.tell()返回当前帧的序号

实例

from PIL import Image
im = Image.open('D:\\Loading.gif')
try:
    im.save('D:\\picframe{:02d}.png'.format(im.tell()))

    while True:
        im.seek(im.tell()+1)
        im.save('D:\\picframe{:02d}.png'.format(im.tell()))
except:
    print("处理结束")

结果:
在这里插入图片描述

Image类的图像转换和保存方法

方法描述
Image.save(filename, format)将图像保存为filename文件名,format是图片格式
Image.convert(mode)使用不同的参数,转换图像为新的模式
Image.thumbnail(size)创建图像的缩略图,size是缩略尺寸的二元元组
from PIL import Image
im = Image.open("D:\\LOL.jpg")
im.save("D:LOL.gif")
im.thumbnail((128,128))
im.save("D:\\LOL","JPEG")

Image类的图像旋转和缩放方法

方法描述
Image.resize(size)按size大小调整图像,生成副本
Image.rotate(angle)按angle角度旋转图像,生成副本

Image类的图像像素和通道处理方法

方法描述
Image.point(func)根据函数func的功能对每个元素进行运算,返回图像副本
Image.split()提取RGB图像的每个颜色通道,返回图像副本
Image.merge(mode,bands)合并通道,其中mode表示颜色,bands表示新的色彩通道
Image.blend(im1,im2,alpha)将两幅图片im1和im2按照如下公式插值后生成新的图像:im1 * (1.0-alpha) + im2 * alpha
from PIL import Image
im = Image.open("D:\\LOL.jpg")
r,g,b = im.split()
om = Image.merge("RGB",(b,g,r))
om.save("D:\\LOLchangecolor.jpg")

结果

在这里插入图片描述

在这里插入图片描述

图像的过滤和增强

PIL库的ImageFiler类和ImageEnhance类提供了过滤图像和增强图像的方法

ImageFilter类的预定义过滤方法

方法表示描述
ImageFilter.BLUR图像的模糊效果
ImageFilter.CONTOUR图像的轮廓效果
ImageFilter.DETAIL图像的细节效果
ImageFilter.EDGE_ENHANCE图像的边界加强效果
ImageFilter.EDGE_ENHANCE_MORE图像的阈值边界加强效果
ImageFilter.EMBOSS图像的浮雕效果
ImageFilter.FIND_EDGES图像的边界效果
ImageFilter.SMOOTH图像的平滑效果
ImageFilter.SMOOTH_MORE图像的阈值平滑效果
方法表示描述
ImageFilter.SHARPEN图像的锐化效果

利用 Image类的filter()方法可以使用ImageFilter类,使用方法如下:

Image.filter(ImageFilter.fuction)

实例

from PIL import Image
from PIL import ImageFilter
im = Image.open("D:\\LOL.jpg")
om = im.filter(ImageFilter.CONTOUR)
om.save("D:\\LOLContour.jpg")

在这里插入图片描述

ImageEnhance类的图像增强和滤镜方法

方法描述
ImageEnhance.enhance(factor)对选择属性对的数值增强factor倍
ImageEnhance.Color(im)调整图像的颜色平衡
ImageEnhance.Contrast(im)调整图像的对比值
ImageEnhance.Brightness(im)调整图像的亮度
ImageEnhance.Sharpness(im)调整图像的锐度

增强图像的对比值为初始值的20倍

from PIL import Image
from PIL import ImageEnhance
im = Image.open("D:\\LOL.jpg")
om = ImageEnhance.Contrast(im)
om.enhance(20).save("D:\\LOL20.jpg")

在这里插入图片描述

CMYK色彩

CMYK色彩是彩色印刷时采用的一套色彩体系,也称印刷四色。CMYK利用色彩的三原色的黑色墨油混合叠加,形成各种色彩。

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值