http://www.cnblogs.com/way_testlife/archive/2011/04/17/2019013.html

Python 之 使用 PIL 库做图像处理

1. 简介。

图像处理是一门应用非常广的技术,而拥有非常丰富第三方扩展库的 Python 当然不会错过这一门盛宴。PIL (Python Imaging Library)是 Python 中最常用的图像处理库,目前版本为 1.1.7,我们可以 在这里 下载学习和查找资料。

Image 类是 PIL 库中一个非常重要的类,通过这个类来创建实例可以有直接载入图像文件,读取处理过的图像和通过抓取的方法得到的图像这三种方法。

2. 使用。

导入 Image 模块。然后通过 Image 类中的 open 方法即可载入一个图像文件。如果载入文件失败,则会引起一个 IOError ;若无返回错误,则 open 函数返回一个 Image 对象。现在,我们可以通过一些对象属性来检查文件内容,即:

1 >>>import Image2  >>> im = Image.open("j.jpg")3  >>>print im.format, im.size, im.mode4 JPEG (440, 330) RGB

这里有三个属性,我们逐一了解。

format : 识别图像的源格式,如果该文件不是从文件中读取的,则被置为 None 值。

size : 返回的一个元组,有两个元素,其值为象素意义上的宽和高。

mode : RGB(true color image),此外还有,L(luminance),CMTK(pre-press image)。

现在,我们可以使用一些在 Image 类中定义的方法来操作已读取的图像实例。比如,显示最新载入的图像:

1 >>>im.show()2  >>>

输出原图:

3. 函数概貌。

3.1    Reading and Writing Images : open( infilename ) , save( outfilename )

3.2    Cutting and Pasting and Merging Images :

crop() : 从图像中提取出某个矩形大小的图像。它接收一个四元素的元组作为参数,各元素为(left, upper, right, lower),坐标系统的原点(0, 0)是左上角。

paste() :

merge() :

1 >>> box = (100, 100, 200, 200)2  >>> region = im.crop(box)3  >>> region.show()4  >>> region = region.transpose(Image.ROTATE_180)5  >>> region.show()6  >>> im.paste(region, box)7  >>> im.show()

其效果图为:

旋转一幅图片:

 1 def roll(image, delta): 2 "Roll an image sideways" 3  4     xsize, ysize = image.size 5  6     delta = delta % xsize 7 if delta == 0: return image 8  9     part1 = image.crop((0, 0, delta, ysize))10     part2 = image.crop((delta, 0, xsize, ysize))11     image.paste(part2, (0, 0, xsize-delta, ysize))12     image.paste(part1, (xsize-delta, 0, xsize, ysize))13 14 return image

3.3    几何变换。

3.3.1    简单的几何变换。

1 >>>out = im.resize((128, 128))                     #2  >>>out = im.rotate(45)                             #逆时针旋转 45 度角。3  >>>out = im.transpose(Image.FLIP_LEFT_RIGHT)       #左右对换。4  >>>out = im.transpose(Image.FLIP_TOP_BOTTOM)       #上下对换。5  >>>out = im.transpose(Image.ROTATE_90)             #旋转 90 度角。6  >>>out = im.transpose(Image.ROTATE_180)            #旋转 180 度角。7 >>>out = im.transpose(Image.ROTATE_270)            #旋转 270 度角。

各个调整之后的图像为:

图片1:

图片2:

图片3:

图片4:

3.3.2    色彩空间变换。

convert() : 该函数可以用来将图像转换为不同色彩模式。

3.3.3    图像增强。

Filters : 在 ImageFilter 模块中可以使用 filter 函数来使用模块中一系列预定义的增强滤镜。

1 >>>import ImageFilter2 >>> imfilter = im.filter(ImageFilter.DETAIL)3 >>> imfilter.show()

3.4    序列图像。

即我们常见到的动态图,最常见的后缀为 .gif ,另外还有 FLI / FLC 。PIL 库对这种动画格式图也提供了一些基本的支持。当我们打开这类图像文件时,PIL 自动载入图像的第一帧。我们可以使用 seek 和 tell 方法在各帧之间移动。

1 import Image2 im.seek(1)        # skip to the second frame3 4 try:5 while1:6         im.seek( im.tell() +1)7 # do something to im8 except EOFError:9 pass

3.5    更多关于图像文件的读取。

最基本的方式:im = Image.open("filename")

类文件读取:fp = open("filename", "rb"); im = Image.open(fp)

字符串数据读取:import StringIO; im = Image.open(StringIO.StringIO(buffer))

从归档文件读取:import TarIO; fp = TarIo.TarIO("Image.tar", "Image/test/lena.ppm"); im = Image.open(fp)

基本的 PIL 目前就练习到这里。其他函数的功能可点击 这里 进一步阅读。

转载于:https://www.cnblogs.com/DjangoBlog/p/3557858.html

Python 之 使用 PIL 库做图像处理相关推荐

  1. image pil 图像保存_如何利用python中的PIL库做图像处理?

    自从这个世界上出现了Python编程,一切都好像有了新的思路与进展,比如人工智能,还有我们常用的PS,你可知道Python也可以做图像处理,用的就是PIL库,还没有用过的,还没有发现的,还没有实现过的 ...

  2. Python使用Pillow(PIL)库实现验证码图片

    Python使用Pillow(PIL)库实现验证码图片 Pillow库有很多用途,本文使用Pillow来生成随机的验证码图片. Pillow的用法参考:https://blog.csdn.net/we ...

  3. 利用Python中的PIL库去处理图片

    利用Python处理图片,任选一张图片,用PIL抓取并显示图像轮廓. 安装PIL在cmd中输入 pip install pillow 今天我们所用到的原图为蕾姆的一张图片 下面就让我们看下Python ...

  4. Python之Pillow(PIL)库

    目录 安装Pillow 基本操作 打开本地图片 裁剪 创建一张新图片 绘制矩形 水平翻转的图像 垂直翻转的图像 调整图像大小 照片复制 图片添加文字 水印图片 与Numpy一起使用 从Numpy数组创 ...

  5. python怎么下载pil库_如何在windows下安装Python的PIL库

    最近在学习廖大大的Python教程,今天正好学习到"安装第三方模块"这一章节,第一个任务就是安装"PIL"库. PIL库是个啥?廖大大的告诉我们: Python ...

  6. Python 技术篇-用PIL库旋转图片、改变图像尺寸

    首先需要安装 PIL 库,直接pip install pillow就好了. 旋转包括 transpose() 和 rotate() 两种方式. resize((a, b)) 是用来改变图片尺寸的. # ...

  7. python add picture显示过大_利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例...

    前言 最近的一个项目中需要在图片上添加文字,使用了OpenCV,结果发现利用opencv给图像添加文字有局限.可利用的字体类型比较少,需要安装Freetype扩展,比较复杂.而且不能用putText函 ...

  8. Python 技术篇-用PIL库实现等比例压缩、缩小图片实例演示

    PIL 库安装直接pip install pillow就好了 PIL 库的 resize() 方法可以修改图片尺寸,里面的参数需要整数,所以我用 int 转化了一下. 等比例就是通过 size 属性获 ...

  9. Python 技术篇-用PIL库修改图片透明度实例演示,改变png图片色道为RGBA、RGB

    PIL 库可以设置图片透明度. pip install pillow 安装了 pillow 库后就可以使用 PIL 库了. 我们都知道,图片是由无数个点组成的,300x300 像素,就是 9 万个点. ...

最新文章

  1. c mysql 分页,MySQL查询之排序分页
  2. 国产游戏《黑神话:悟空》刷爆全网,虚幻引擎4打造,网友:有生之年终于看到国产3A!...
  3. DPDK 大页内存原理(二十一)
  4. linux 动态库构造函数,Linux共享库全局构造函数的相互依赖性
  5. java自定义异常(Exception、throws、try-catch)
  6. 【软件工程】几种模型概念:瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型
  7. 分布式系统工具箱 Spring Cloud 概览
  8. Linux_ppc下软件包安装,LINUX2000PPC安装手册
  9. 在SCDN中如何转载别人文章
  10. 移动通信(Mobile Communication)
  11. 软件测试中根据测试用例设计的方法,测试用例设计方法有哪些?举例说明
  12. 找回 Windows 11 丢失的扫雷游戏【新春快乐】
  13. RGB颜色与十六进制颜色码
  14. 19所高校进入A类!泰晤士计算机专业大学评级公布!
  15. 那些只有程序员才能看懂的冷笑话
  16. 鼠标双击桌面上的快捷方式出现打开本快捷方式属性,而不是打开文件的可能原因及解决方法参考...
  17. 数据库三级考试 真题存储过程汇总(含答案)
  18. intuitionistic fuzzy set 运算规则python实现
  19. 树莓派学习【不定时更新】
  20. 润物无声:java的字符串操作

热门文章

  1. leetcode-26-删除排序数组中的重复项
  2. [Linux]F5负载均衡器
  3. Mybatis入门及于hibernate的区别
  4. AXURE RP8实战手册(完整版)
  5. ajax传递参数给springmvc总结[转]
  6. LocalDB连接失败
  7. Windows 8.1 新增控件之 DatePicker
  8. (转)C#2.0泛型--Dictionary,List用法
  9. 关于Linux系统中用户权限问题
  10. 晓曼机器人能恢复出厂设置吗_手机出毛病了就恢复出厂设置,会损伤手机吗?影响有多大呢...