Python PIL库学习笔记
1.PIL简介
Python Imaging Library(缩写为PIL)(在新的版本中被称为Pillow)是Python编程语言的开源库,它增加了对打开,操作和保存许多不同图像文件格式的支持。它适用于Windows,Mac OS X和Linux。可惜的是它在2009年停止更新了。
不过,幸运的是一个名为Pillow的后继项目已经分叉了PIL存储库并添加了Python 3.x支持。这个分支已被用作Linux发行版中原始PIL的替代品,包括Debian 和Ubuntu。
PIL库由于它对图像处理的优秀,已经成为Python平台事实上的图像处理标准库了。
2.PIL(Pillow)的用法
2.1 PIL库Image类
from PIL import Image #Image 是 PIL 最重要的类,使用前要先引用
而 open()是 Image 类中最常用的模块,其功能为打开一个图片文件。使用如下:
>>> from PIL import Image
>>> im = Image.open("rode。jpg") #打开图片 rode。jpg
如果读取图片成功,可以试着对其进行一些操作。不妨我们试着输出图片的一些信息:
>>> from __future__ import print_function #引用格式识别函数
>>> print(im.format, im.size, im.mode) #输出图片的格式,大小,图像色彩模式(彩色为 RGB,灰色为 L)
还有一个常用功能,显示图片 show()。
im.show() #显示图片
对GIF图提取各帧的图像,并保存图片。
from PIL import Image
import os gifFileName = 'hand.gif' im = Image.open(gifFileName) #使用Image模块的open()方法打开gif动态图像时,默认是第一帧
pngDir = gifFileName[:-4]
os.mkdir(pngDir) #创建存放每帧图片的文件夹 try:
while True: current = im.tell() #保存当前帧图片
im.save(pngDir+'/'+str(current)+'.png')
im.seek(current+1) #获取下一帧的图片
except EOFError: pass
2.2 对图片进行一些处理
from PIL import Image
im = Image.open("rode.jpg")
r, g, b = im.split()
om = Image.merge("RGB",(b, g, r)) #让图片变为蓝色色调
om.save('rodeBGR.jpg')
im = Image.open("rode.jpg").convert("L") #由RGB色彩体系转变为灰白体系
im.save('rodegray.jpg')
im = Image.open("rodegray.jpg")
im.thumbnail((628,628)) #改变图片的大小
im.save("rodemini.jpg")

原图

变为蓝调

变为灰白

缩小
要对图片做进一步处理,就要引用 ImageFilter 类了
from PIL import ImageFilter
im = Image.open('rode.jpg')
om = im.filter(ImageFilter.CONTOUR) #轮廓效果
om.save('rodeContour.jpg')
om = im.filter(ImageFilter.BLUR) #模糊化处理
om.save('rodeBlur.jpg')
im = Image.open('rode.jpg')
om = im.filter(ImageFilter.EMBOSS) #浮雕效果
om.save('rodeEmboss.jpg')

原图

轮廓

模糊化

浮雕
现在我们把上面的图片生成一个GIF图吧。先上代码:
import matplotlib.pyplot as plt
import imageio,os images = []
filenames=sorted((fn for fn in os.listdir('.') if fn.endswith('.jpg'))) for filename in filenames:
images.append(imageio.imread(filename))
imageio.mimsave('gif3.gif', images,duration=1)
最后效果:


Python PIL库学习笔记的更多相关文章
- python requests库学习笔记(上)
尊重博客园原创精神,请勿转载! requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.pytho ...
- Python turtle库学习笔记
1.简介 Python的turtle库的易操作,对初学者十分友好.对于初学者来说,刚学编程没多久可以写出许多有趣的可视化东西,这是对学习编程极大的鼓舞,可以树立对编程学习的信心.当然turtle本身也 ...
- python requests库学习笔记(下)
1.请求异常处理 请求异常类型: 请求超时处理(timeout): 实现代码: import requestsfrom requests import exceptions #引入exc ...
- python os库学习笔记
os.getcwd(): 获取当前目录 os.name: 获取当前使用的操作系统 eg: print os.name os.remove(): 删除指定文件 eg: os.remove('test.t ...
- 吴裕雄--天生自然Python Matplotlib库学习笔记:matplotlib绘图(1)
Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件.它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式. from pylab import * size = 128, ...
- Python Requests 库学习笔记
概览 实例引入 import requests response = requests.get('https://www.baidu.com/') print(type(response)) prin ...
- 吴裕雄--天生自然Python Matplotlib库学习笔记:matplotlib绘图(2)
import numpy as np import matplotlib.pyplot as plt fig = plt.figure() fig.subplots_adjust(bottom=0.0 ...
- Requests:Python HTTP Module学习笔记(一)(转)
Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...
- python网络爬虫学习笔记
python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...
随机推荐
- struts2下velocity做视图如何访问request,session等内置对象,如:原来webwork的$req
struts2下velocity做视图如何访问request,session等内置对象(转) velocity 内置对象 struts2 requestStruts2环境下用velocity做视图时访 ...
- visual studio 2013 git 记住密码
原有配置: C:\Users\Administrator 下.gitconfig内容为 [user] name = lijf4 email = lijf4@lenovo.com 删除,修改为 [cre ...
- 构建命令maven install 打包不是最新的代码
问题: 之前一直用的是mvn install 命令来构建项目,但是最近发现最新的代码没有在war包中.之前看的说 mvn install 命令会执行之前的所有阶段,会被编译,测试,打包. 经查最后采用 ...
- VR与AR的发展趋势分析
概要 你是否想象过与神秘的深海生物近距离接触?你是否梦想过穿戴钢铁侠那样的超先进科技装备成为超级英雄?你又是否幻想过与梦中的女神面对面的交流?这些可能在以前都只能是存在于脑海中的幻想,可是在如今有一项 ...
- Neutorn LBaaS 原理
Load Balance as a Service(LBaaS)是 Neutron 提供的一项高级网络服务.LBaaS 允许租户在自己的网络中创建和管理 load balancer. load bal ...
- Exp5 MSF基础应用 20164323段钊阳
网络对抗技术 20164323 Exp5 MSF基础应用 靶机 ip:192.168.1.229 kali ip:192.168.1.216 exploit选取 主动攻击:ms17_010_psexe ...
- 如何获取token值
登录的时候需要拿到token值,需要跟后端配合才能拿到 官方说明: https://developers.weixin.qq.com/miniprogram/dev/api/api-login.htm ...
- kvm快照备份及常用命令
转载自:http://www.myjishu.com/?p=431 好文章 kvm快照备份及常用命令 kvm快照,分两种: 1种lvm快照,如果分区是lvm,可以利用lvm进行kvm的快照备份 2种由 ...
- sonarLint和sonarQube
在线安装和离线装sonarLint https://blog.csdn.net/limm33/article/details/51166840 下载指定版本的sonarLint https://bin ...
- 源码编译安装MySQL-5.6/mysql-5.6.39------踩了无数坑,重装了十几次服务器才会的,不容易啊!
1.切换到src目录 cd /usr/local/src/ 2. 下载mysql免编译二进制包 免编译的mysql二进制包5.6源码包: wget http://mirrors.163.com/mys ...