首页 > 代码库 > python PIL库回顾

python PIL库回顾

之前用PIL的时候都不知道看官方文档,网上搜索结果靠前的一些介绍性的博客其实很扯淡,讲两个函数、贴三张图,文章就完了。

今天把他的文档看了看,发现一点也不简单,网上介绍的不过是冰山一角。


对于我这样一个不太懂多媒体的人,如果用到图像处理,主要也就这些操作:

读写、取通道、两幅图合并、像素点操作、各种滤镜、色彩模式转换、图像旋转、缩放、裁剪、仿射。

PIL对付这些小喽啰,都是完全没有问题的。

  • 读写

    • open是Image类的一个方法,返回值是一个Image对象,值得注意的是,open不能打开网络图片,之前读取网上的验证码,就是先request图片网址存一个string以后再用StringIO打开的。
    • 显示图像是show方法,但是文档中已经指出:

      show 的标准实现不是很高效,因为它先将图像保存成一个临时文件,然后调用 xv 程序来显示图像。如果你没有安装xv ,它甚至不能工作。然而如果它可用,它将是非常方便的出错和测试的工具。

    • 保存图像是save方法,可以显式指定要保存的文件的格式

  • 几何变换

    • 缩略图:thumbnail方法,参数是一个size,指明宽高
    • 裁剪:crop,大概是最常用的方法之一了,和opencv的区别在于,这里crop的参数box,是矩形的四个角,x1,x2,y1,y2,而opencv中的box是x,y,width,height
    • 转置:transpose,相当于先镜像再旋转
    • resize:
  • 通道:

    • 通道的分离是split,合并是merge,split方法能够创建一组新的图像,每一幅都是原来多通道图像的一个通道。merge函数以一个模式和一组图像的元组为参数,把这些图像组成一幅新图像。如:

      im = Image.merge("RGB", (b, g, r))`

这里有两篇简介的写的挺漂亮:

http://onlypython.group.iteye.com/group/wiki/1371-python-graphics-library-pil-python-image-library-introduction

http://onlypython.group.iteye.com/group/wiki/1372-python-graphics-image-processing-library-introduced-the-image-module