pillow图像处理库

PIL(Python Imaging Library)是Python常用的图像处理库,但PIL仅支持到Python2.7,后一群志愿者在PIL的基础上创建了PIL的兼容版本Pillow

Pillow提供了广泛的文件格式支持,强大的图像处理能力,主要包括图像存储、图像显示、格式转换以及基本的图像处理操作等

Pillow扩展库主要功能

图像归档

对图像进行批处理、生成图像预览、图像格式转换等

图像处理

图像基本处理、像素处理、颜色处理

Pillow扩展库主要操作

在PIl中,任何一个图像文件都可以用Image对象表示

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

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

Image类有4个处理图片的常用属性

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

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

方法 描述
Image.save(filename,format) 将图像保存为filename文件名,format是图片格式
Image.convert(mode) 使用不同的参数,转换为图像为新的模式
Image.thumbnail(size) 常见图像的缩略图,size是缩略图尺寸的二元元祖

生成缩略图,128*128是尺寸

from PIL import Image
im=Image.open("头像(1).jpg")
im.thumbnail((128,128))
im.save("img1","JPEG")

Image类能够对每个像素点或者一幅RGB图像的每个通道单独进行操作,split()方法能够将RGB图像个颜色通道提取出来,merge()方法能够将各独立通道再合成一幅新的图像。

方法 描述
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("1.jpg")
r,g,b=im.split()
om=Image.merge("RGB",(b,g,r))#对RGB的颜色进行了调换
om.save('2.jpg')

PIL库的ImageFilter提供的过滤图像方法

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

生成图像模糊效果:套用滤镜

from PIL import Image
from PIL import ImageFilterim=Image.open("1.jpg")
om=im.filter(ImageFilter.BLUR)
#为图片使用模糊滤镜
om.save("3.jpg")

PIL库的ImageEnhance类提供了更高级的图像增强效果,提供调整色彩度、亮度、对比度、锐化等功能。

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

高级图像增强实例

from PIL import Image
from PIL import ImageEnhanceim=Image.open("1.jpg")#调整图像对比库
om=ImageEnhance.Contrast(im)
#图像对比度增强3倍
om.enhance(3).save("4.jpg")

随机生成验证码

from PIL import Image,ImageDraw,ImageFont,ImageFilter
import random# 随机字母:(65-90表示26个大写英文字母)
def rndChar():return chr(random.randint(65, 90))# 随机颜色1:验证码背景颜色
def rndColor():return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))# 随机颜色2:文本颜色
def rndColor2():return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))# 240 x 60:
width = 60 * 4
height = 60
image = Image.new('RGB', (width, height), (255, 255, 255))
# 创建Font对象:
font = ImageFont.truetype('arial.ttf', 36)
# 创建Draw对象:
draw = ImageDraw.Draw(image)
# 填充每个像素:
for x in range(width):for y in range(height):draw.point((x, y), fill=rndColor())#fill随机颜色
# 输出文字:
for t in range(4):draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())
# 模糊:
image = image.filter(ImageFilter.BLUR)
image.save('code.jpg', 'jpeg')

图像处理实战-Python编程进阶相关推荐

  1. 自然语言处理实战-Python编程进阶

    中文分词方法 基于字典.词库匹配的分词方法(基于规则) 将待分的字符串与一个充分大的机器词典中的词条进行匹配.常用的有:正向最大匹配,逆向最大匹配,最少切分法.实际应用中,将机械分词作为初分手段,利用 ...

  2. Excel文件处理实战-Python编程进阶

    openpyxl库 openpyxl库特点 用于读取写入Excel2010 xlsx.xlsm.xltx.xltm文件的Python库 使用getter.setter模式.可以随时读取某个单元格的内容 ...

  3. 【编程之路】Python编程进阶

    Python编程进阶 不使用中间变量,交换两个变量a和b的值. a, b = b, a 需要注意,a, b = b, a 这种做法其实并不是元组解包,虽然很多人都这样认为.Python 字节码指令中有 ...

  4. Python编程进阶,常用8大技巧!

    选自medium,作者:Martin Heinz 机器之心编译 介绍 Python 炫酷功能(例如,变量解包,偏函数,枚举可迭代对象等)的文章层出不穷.但是还有很多 Python 的编程小技巧鲜被提及 ...

  5. 西瓜创客python编程进阶收费_西瓜创客和编程猫有什么不同?哪个更值得报名?...

    看情况来决定即可,在课程内容上其实出入我觉得不是很大,重点是教学服务.师资.授课模式等,单纯我自己的角度来说,我个人偏向于西瓜创客多一点,他们家的课程更具有趣味性,游戏化教学,融入卡通人物,对孩子来说 ...

  6. 6.多个例子实战Python编程

    本篇通过几个实用的例子来复习Python语法. 6.1 实战1:九九乘法表 本例技术点:打印小学乘法口诀表(练习for循环.字符串格式化). 我们看到的九九乘法口诀表如下图. 第一步:定义乘数x,即每 ...

  7. python对象编程例子-python编程进阶之类和对象用法实例分析

    本文实例讲述了python类和对象用法.分享给大家供大家参考,具体如下: 前面我们都是用python面向过程编程,现在来用python创建类和对象,面向对象编程.类和对象是面向对象编程的两个主要方面. ...

  8. Python编程进阶,Python如何实现多进程?

    进程part1 一.进程介绍 1.获取子父进程 2.进程的基本使用 2.创建带有参数的进程 3.进程之间的数据彼此隔离 4.多个进程之间的异步并发 二.join 1.基本语法 2.使用自定义类的方法创 ...

  9. Python编程进阶 高级变量(看完就会了)

    文章目录 一.简介 1.目标 2.知识点回顾 3.非数字型变量的特点 二.字符串 1.下标索引 2.切片 (1)作用 (2)索引的顺序和倒序 (3)实例 3.find 4.index 5.count ...

最新文章

  1. codevs 2606 约数和(分块优化数学公式 )
  2. autowired 与 resources 注解的区别
  3. 一个历时五天的 Bug
  4. 一步一步搭建ELK日志处理集群(自己做过测试)
  5. strlcpy和strlcat——一致的、安全的字符串拷贝和串接函数
  6. Python调用Java代码部署及初步使用
  7. 新手上路教程4_其他-视图-触发器
  8. AppBoxPro - 细粒度通用权限管理框架(可控制表格行内按钮)源码提供下载
  9. android怎么阿看手机是移动联通还是电信的网络,GSM是联通、移动还是电信的网络?...
  10. 深度学习笔记_评分函数/损失函数
  11. 8月18日梦记录及分析
  12. 在同个工程中使用 Swift 和 Objective-C(Swift 2.0更新)-b
  13. Windows驱动的Checked (chk)和Free(fre)区别
  14. 云监控介绍 - Amazon CloudWatch
  15. 如何成为一名优秀的技术 Leader?(转)
  16. 豆豆趣事[2014年08月]
  17. 同花顺程序交易接口实现类
  18. 获取颜色值 抓取颜色值 获取颜色代码RGB
  19. 接口报错500是什么意思_HTTP 500错误是什么意思?
  20. [学位]燕山大学中文学术期刊目录(2020修订版)

热门文章

  1. 【难题+重点】剑指offer——面试题40:数组中只出现一次的数字
  2. CommonJS的值拷贝与ES6的动态映射
  3. 【机器学习】算法调参
  4. 【前端】CSS使用总结
  5. Latex中插入超链接/网址
  6. 四张类图理一下Streams的用法
  7. 2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础
  8. pyton random 模块
  9. 网络请求 get 请求时, 如果参数中的字符带有+号
  10. CMakeFiles/species.inc.dir/build.make:57: recipe for target 'CMakeFiles/species.inc' failed