快乐python 零基础也能P图 —— PIL库
Python PIL
PIL (Python Image Library) 库是Python 语言的一个第三方库,PIL库支持图像存储、显示和处理,能够处理几乎所有格式的图片。
一、PIL库简介
1. PIL库主要有2个方面的功能:
(1) 图像归档:对图像进行批处理、生产图像预览、图像格式转换等。
(2) 图像处理:图像基本处理、像素处理、颜色处理等。
2. PIL拥有多个类,此处就其中的Image类、ImageFilter类、ImageEnhance类做简单介绍。
二、安装库函数
pip install pillow
注:由于本机已经安装了PIL库(安装时使用pillow),所以以更新为例,使用 -U 标签可实现更新。
三、使用库函数Image类 —— 基本图像处理
1. 调用Image类
from PIL import Image
2. Image类关于图像读取与创建
方法 |
说明 |
Image.open(filename) |
加载图像文件 |
Image.new(mode,size,color) |
根据给定参数创建新图像 |
Image.open(StringIO.StringIO(buffer)) |
从字符串中获取图像 |
Image.frombytes(mode,size,color) |
根据像素点创建新图像 |
Image.verify() |
对图像完整性进行检查,返回异常 |
3. Image类的常用属性
方法 |
说明 |
Image.format |
图像格式或来源,若图像不是从文件读取,返回None |
Image.mode |
图像的色彩模式,’L’为灰度模式,’RGB’为真彩色图像,’C(青)M(品红)Y(黄)K(黑)’为出版图像 |
Image.size |
图像的宽度和高度,单位是像素(px),返回值为元组类型 |
Image.palette |
调色板属性,返回ImagePalette类型 |
4.Image类的序列图像操作方法
方法 |
说明 |
Image.seek(frame) |
跳转并返回图像中的指定帧 |
Image.tell() |
返回当前帧的序号 |
5.Image类的图像旋转和缩放方法
方法 |
说明 |
Image.resize(size) |
返回按size大小调整图像的副本 |
Image.rotate(angle) |
返回按angle角度旋转图像的副本 |
6.Image类的图像转换和保存方法
方法 |
说明 |
Image.save(filename,format) |
将图像保存为filename文件名,format格式 |
Image.convert(mode) |
将图像转换为mode模式 |
Image.thumbnail(size) |
创建图像的缩略图,size是缩略图尺寸的元组 |
Example_1:
# -*- encoding:utf-8 -*-
''' 改变颜色 --- 颜色反转'''
from PIL import Image
nest = Image.open("D:\\nest.jpg")
r,g,b = nest.split() #获取原图的RGB通道的颜色值
newb = b.point(lambda i:i*1.1) #将B通道的颜色值增强
nest1 = Image.merge(nest.mode,(b,g,r))
nest1.thumbnail((400,254)) #创建缩略图
nest1.save("D:\\nest_2.jpg")
原图与效果图对比:
7.Image类的图像像素和通道处理方法
方法 |
说明 |
Image.point(func) |
根据函数func的功能对每个元素进行运算,返回图像副本 |
Image.split() |
根据GRB图像的每个颜色通道,返回图像副本 |
Image.merge(mode,bands) |
合成通道,其中mode为色彩,bands为新的色彩通道 |
Image.blend(im1,im2,alpha) |
将2张图片im1和im2按照公式插值后生成新图像 公式:im1*(1.0 - alpha) + im2*alpha |
四、使用库函数ImageFilter类 —— 图像过滤
1.调用ImageFilter类
from PIL import ImageFilter
2. 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 |
图像的锐化效果 |
Example_2:
# -*- encoding:utf-8 -*-
''' 轮廓效果 --- 素描 '''
from PIL import Image
from PIL import ImageFilter
square = Image.open("D:\\square.jpg")
square1 = square.filter(ImageFilter.CONTOUR) #选择轮廓效果
square1.save("D:\\square0.jpg")
原图:
效果图:
五、使用库函数ImageEnhance类 —— 图像增强
1. 调用ImageEnhance类
from PIL import ImageEnhance
2.ImageEnhance类图像增强与滤镜方法
方法 |
说明 |
ImageEnhance.enhance(factor) |
对所选属性的数值增强factor倍 |
ImageEnhance.Color(im) |
调整图像的颜色平衡 |
ImageEnhance.Contrast(im) |
调整图像的对比度 |
ImageEnhance.Brightness(im) |
调整图像的亮度 |
ImageEnhance.Sharpness(im) |
调整图像的锐度 |
Example_3:
# -*- encoding:utf-8 -*-
''' 亮度增强 --- 曝光 '''
from PIL import Image
from PIL import ImageEnhance
gz = Image.open("D:\\gz.jpg")
gz1 = ImageEnhance.Brightness(gz) #选择亮度
gz1.enhance(2).save("D:\\gz1.jpg") #将亮度增强2倍后保存
原图对比效果图:
Example_4:
# -*- encoding:utf-8 -*-
''' 制作GIF图 '''
import imageio
savename = "D:\\my.gif"
#准备制作的图像名称
filenames = ["D:\\3.jpg","D:\\2.jpg","D:\\1.jpg","D:\\01.jpg","D:\\02.jpg","D:\\03.jpg","D:\\04.jpg"]
frames = []
for name in filenames:
frames.append(imageio.imread(name))
imageio.mimsave(savename,frames,'GIF',duration=1)
快乐python 零基础也能P图 —— PIL库的更多相关文章
- Python 零基础入门
Python 零基础入门 1.1 Python介绍 Python 是一门优雅且健壮的面向对象解释型计算机程序编程语言,具有面向对象.可升级.可扩展.可移植 语法简洁清晰易学.易读写.易维护.健壮性.通 ...
- 5月25号开学! 第13期《python3自动化测试selenium+接口》课程,python零基础也能学
2019年 第13期<python3自动化测试selenium+接口>课程,5月25号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学 本期上课时间:5月25号-7月28号,每周 ...
- 万门大学Python零基础10天进阶班视频教程
点击了解更多Python课程>>> 万门大学Python零基础10天进阶班视频教程 课程简介: 旨在通过两周的学习,让学生不仅能掌握python编程基础从而进行计算机程序的开发, 还 ...
- 大牛整理最全Python零基础入门学习资料
大牛整理最全Python零基础入门学习资料 发布时间:『 2017-11-12 11:56 』 帖子类别:『人工智能』 阅读次数:3504 (本文『大牛整理最全Python零基础入门学习资料 ...
- Python 让我舅舅的书法作品和 PIL 库发生点美的误会
Python 让我舅舅的书法作品和 PIL 库发生点美的误会 1. 前言 不久之前写过一篇文章,详细介绍了 PIL 库中的 Image 模块的使用.曾经学习过.使用过一段时间的 PS,认识 PIL 后 ...
- Python零基础学习系列之二--Python介绍及环境搭建
1-1.Python简介: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.像P ...
- 猜数字和飞机大战(Python零基础入门)
前言 最近有很多零基础初学者问我,有没有适合零基础学习案例,毕竟零基础入门的知识点是非常的枯燥乏味的,如果没有实现效果展示出来,感觉学习起来特别的累,今天就给大家介绍两个零基础入门的基础案例:猜数字游 ...
- Python 零基础快速入门!
“人生苦短,我学python”是编程届的名言.用python写小脚本的便捷性,让很多其他语言的学习者把python当作辅助语言.拥有了某一个语言的功底,再来学习另外一种语言应该是十分快速的.编程理念都 ...
- Python运算符 - Python零基础入门教程
目录 一.算术运算符 二.赋值运算符 三.比较运算符 四.运算符的优先等级 五.重点总结 六.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python ...
随机推荐
- java script简介
JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标 ...
- java课程之团队开发冲刺1.5
一.总结昨天进度 1.昨天由于时间较少,没有太多的时间来进行学习Sqlite 二.遇到的困难 1.由于最终的程序需要调用本地的数据库,所以我们需要在安装程序的时候就需要直接附带安装一个本地的数据库到手 ...
- day50 盒子显隐2D形变
复习 1.浮动布局 解决block盒子同行显示 => 不完全脱离文档流 => 不再撑开父级高度 脱离文档流: 不在页面中占位(显示层次高于文档流) 不完全: 可以通过清浮动操作, 让子级重 ...
- nginx屏蔽ip配置
屏蔽单个IP的命令是 deny 192.168.201.1 封ip段192 deny 192.0.0.0/8 封ip段192.168 deny 192.168.0.0/16 封ip段192.168.2 ...
- 第九周博客作业 <西北师范大学| 周安伟>
第九周助教作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 作业要求博客链接https://www.cnblogs.com/nwnu-daizh/p/10726 ...
- c# 域名转换成ip地址
tcp协议发送到某个地址端口号是,地址是域名3322.net类型,转换成ip地址.亲测两种方法都可以. 1.参考https://blog.csdn.net/szsbell/article/detail ...
- openal在vs2010中的配置
下载openal开发工具:相关资料可以在OpenAL官网http://connect.creativelabs.com/openal/default.aspx上获得.这里下载的SDK为OpenAL11 ...
- android HTTP镜像
mirrors.neusoft.edu.cn 80
- 19-06 【phpunit和docker】
phpunit简介 在用PHP做项目的时候,有时候我们需要写一些测试代码,其中可能包含单元测试(比如字符串处理,ip解析,mobile解析等). 我们常用的工具是phpunit,它很方便地帮我们组织测 ...
- CentOS7+CDH5.14.0安装CDH错误排查: HiveServer2 该角色的进程已退出。该角色的预期状态为已启动
错误提示: HiveServer2 该角色的进程已退出.该角色的预期状态为已启动 解决办法:出现此问题应该是内存不足造成的,重启相应的组件即可.比如Hive报错,重启Hive,YARN报错,重启YAR ...