Python图片处理库之PIL

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                       

这个模块对于Python2.7 的windows64位电脑而言,还真的是不好找啊。这里分享一个下载链接吧,需要的朋友可以下载下来。PIL For Windows64 Python2.7下面分享一下这个库的简单的使用。


安装

上面的这个超链接是一个exe文件,点击安装的时候,会自动的探测你电脑上Python的安装位置,所以很方便。就不再过多的叙述了。

很多的小例子

这里是一些常用的相关的函数的使用,记得在你的代码的目录下面放一张图片,不然会报错的。


第一个小例子Firsttest.py

# coding:utf-8import Image"""format: 识别图像的源格式,如果不是从文件中读取的,则被设置为None值size:   返回的一个元组,有两个元素,其值为像素意义上的宽和高mode:   RGB,此外还有L(Luminance),CTMK(pre-press image,呵呵我也不知道这是个神马)"""image = Image.open('hu.jpg')print image.format, image.size, image.mode# 用于将图片 使用本地的图片查看器打开image.show()
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

手动制作一张图片

# coding:utf-8import Imageimage = Image.new("RGBA",(640,480),(123,213,123))image.save('CreatedByPython.jpg','jpeg')
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

打开,保存操作

# coding:utf-8import Image"""crop:   从原图层上剪切下来一个给定的矩形大小,此函数接收一个四元素的元组作为其参数,分别代表左上右下,原点为左上角paste:  粘贴的含义,将剪切到的图像粘贴到某一个位置merge:  合并,图像的合并操作"""image = Image.open('hu.jpg')box = (100, 100, 300, 300)mycrop = image.crop(box)# # mycrop.show()# mycrop.save('hu_crop.jpg')## # 旋转180° 的图像显示# # mycrop.transpose(Image.ROTATE_180).show()## # 将剪切板上的图像粘贴到某张图片上,粘贴的位置根据box而定# image.paste(mycrop, box)# image.show()mycrop.rotate(Image.ROTATE_180)image.paste(mycrop,box)image.save('pasted.jpg','jpeg')
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

对图片上的每个像素点进行操作

# coding:utf-8import Image"""    image.point(function) 这个function接收一个参数,且对图像的每一个点都会进行这个函数的变换"""image = Image.open('hu.jpg')image = image.point(lambda i : i * 1.5)image.show()
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

旋转图片

# coding:utf-8import Imageimage = Image.open("hu.jpg")# 下面的几行代码可以较好的呈现出图片的变化情况image.rotate(45).show()image.rotate(90).show()image.rotate(180).show()image.rotate(270).show()image.rotate(360).show()
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

缩放图片

# coding:utf-8import Imageimport glob, ossize = 128, 128image = Image.open('hu.jpg')# 调用thumbnail方法完成对图片的处理image.thumbnail(size, Image.ANTIALIAS)image.save("hu_scale.jpg")
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

图层通道操作

#coding:utf-8import Image"""    r,g,b=im.split()#分割成三个通道,此时r,g,b分别为三个图像对象。    im=Image.merge("RGB",(b,g,r))#将b,r两个通道进行翻转。"""image = Image.open('hu.jpg')r,g,b = image.split()r.save('Split/r.jpg','jpeg')g.save('Split/g.jpg','jpeg')b.save('Split/b.jpg','jpeg')image = Image.merge("RGB",(b,g,r))image.save('Split/mergedByBGR.jpg','jpeg')image = Image.merge("RGB",(g,r,b))image.save('Split/mergedByGRB.jpg','jpeg')image = Image.merge("RGB",(r,g,b))image.save('Split/mergedByRGB.jpg','jpeg')
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

转换操作

# coding:utf-8import Imageimage = Image.open('hu.jpg')# 格外应该注意这里 接受一个元组参数image.resize((200, 200))# 链式的调用可以显示改变的效果,换行了貌似就不行了。:-)image.rotate(45) # 旋转45°image.transpose(Image.FLIP_LEFT_RIGHT).show() # 左右对换image.transpose(Image.FLIP_TOP_BOTTOM).show() # 上下对换image.transpose(Image.ROTATE_90).show()       # 旋转90°
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

超多特效(滤镜效果)

# coding:utf-8import Image, ImageFilter"""色彩空间的变换,convert函数可以用来将图像转换为不同的色彩模式"""image = Image.open('hu.jpg')# image.filter(ImageFilter.DETAIL).show() # 真实效果展现# image.filter(ImageFilter.BLUR).show()   # 以模糊化的效果展现# image.filter(ImageFilter.CONTOUR).show()  # 以铅笔画的效果展现# image.filter(ImageFilter.FIND_EDGES).show()  # 以铅笔画黑色背景展示# image.filter(ImageFilter.EDGE_ENHANCE).show()  # 线条高亮的显示效果# image.filter(ImageFilter.EDGE_ENHANCE_MORE).show()  # 强化线条高亮# image.filter(ImageFilter.EMBOSS).show()  # 浮雕效果# image.filter(ImageFilter.GaussianBlur).show()  # 也是模糊化的显示效果# image.filter(ImageFilter.SMOOTH_MORE).show()# image.filter(ImageFilter.GaussianBlur).save('Filter/GaussianBlur.jpg','jpeg')image.transpose(Image.FLIP_LEFT_RIGHT).save('left_to_right.jpg','jpeg')
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

总结

上面罗列出的仅仅是PIL库中的Image模块的部分的函数,里面还有很多东西值得去挖掘。但如果仅仅是简单的一些操作,上面的也差不多够了。

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/gfdfhjj/article/details/83956070