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库学习笔记的更多相关文章

  1. python requests库学习笔记(上)

    尊重博客园原创精神,请勿转载! requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.pytho ...

  2. Python turtle库学习笔记

    1.简介 Python的turtle库的易操作,对初学者十分友好.对于初学者来说,刚学编程没多久可以写出许多有趣的可视化东西,这是对学习编程极大的鼓舞,可以树立对编程学习的信心.当然turtle本身也 ...

  3. python requests库学习笔记(下)

    1.请求异常处理 请求异常类型: 请求超时处理(timeout): 实现代码: import requestsfrom requests import exceptions        #引入exc ...

  4. python os库学习笔记

    os.getcwd(): 获取当前目录 os.name: 获取当前使用的操作系统 eg: print os.name os.remove(): 删除指定文件 eg: os.remove('test.t ...

  5. 吴裕雄--天生自然Python Matplotlib库学习笔记:matplotlib绘图(1)

    Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件.它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式. from pylab import * size = 128, ...

  6. Python Requests 库学习笔记

    概览 实例引入 import requests response = requests.get('https://www.baidu.com/') print(type(response)) prin ...

  7. 吴裕雄--天生自然Python Matplotlib库学习笔记:matplotlib绘图(2)

    import numpy as np import matplotlib.pyplot as plt fig = plt.figure() fig.subplots_adjust(bottom=0.0 ...

  8. Requests:Python HTTP Module学习笔记(一)(转)

    Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...

  9. python网络爬虫学习笔记

    python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...

随机推荐

  1. dedecms导出csv文件

    1.mshd_orderlist.tpl <form id="frm" method="GET" action="mshd_orderlist. ...

  2. 回答了这四个问题,你就可以打造最佳App首页

    如果把手机APP比作人的话,首页就是脸面了.首页是一款产品的大门,好的开头就是成功的一半. 调查表示,26%的手机APP的平均使用次数只有一次.对首次使用产品的用户而言,首页的好坏关乎到用户对该产品的 ...

  3. BZOJ 1503 郁闷的出纳员 (treap)

    1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 13370  Solved: 4808[Submit][Stat ...

  4. Alpha冲刺 - (6/10)

    Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 基于ssm框架的前后端交互测试,结合 ...

  5. ASP.NET Core2实现静默获取微信公众号的用户OpenId

    最近在做个微信公众号的项目,需要将入口放置在公众号二级菜单内,通过点击该菜单链接后进入到该项目中去,进入到项目后程序会自动通过微信公众号的API完成用户的OpenId获取.需求很简单,实现起来也不复杂 ...

  6. Python学习-8.Python的循环语句-while语句

    例子: i = 1 while i < 10: print(i) i+=1 else: print('finish') 输出1至9和finish 在while语句中同样支持for语句所支持的co ...

  7. cocos2dx常见Action(转)

    本文转载自:http://blog.csdn.net/ff313976/article/details/23667209 bool HelloWorld::init(){ ////////////// ...

  8. [转发]RTH试用手记之“外场应用”

    年初,罗德与施瓦茨公司(Rohde & Schwarz)推出了第一款的手持示波器,从指标上看,该示波器打破了传统手持器功能简单.指标水平低.结构粗糙的印象,取而代之达到了主流台式数字示波器的性 ...

  9. linux下svn服务器的搭建

    网上的教程实在是太恶心了,不是太老,就是有问题,刚参考的一篇文章也有问题.自己记录下来,以后用就方便了,现在一边重新安装一遍,一边记录.笔者亲测,今天是5月29号深夜. linux用的是centos6 ...

  10. Last-Modified Header in Asp.net Core MVC

    public class YourController : Controller { public ActionResult MyPage(string id) { var entity = _db. ...