好玩图像PIL处理

2019-04-11 Python 3.7.1

1.安装pillow库:
  在cmd下,输入简单的命令: pip install pillow  即可安装pillow库。
2.PIL库的简介:
  1. PIL库主要有2个方面的功能:
  (1) 图像归档:对图像进行批处理、生产图像预览、图像格式转换等。
  (2) 图像处理:图像基本处理、像素处理、颜色处理等。
  2. PIL拥有多个类,此处就其中的Image类、ImageFilter类、ImageEnhance类做简单介绍。
3.使用库函数Image类 —— 基本图像处理
  1). 调用Image类
  调用方法:from PIL import Image
  2). Image类关于图像读取与创建
  Image.open(filename) 加载图像文件
  Image.new(mode,size,color) 根据给定参数创建新图像
  Image.open(StringIO.StringIO(buffer)) 从字符串中获取图像
  Image.frombytes(mode,size,color) 根据像素点创建新图像
  Image.verify() 对图像完整性进行检查,返回异常
  3). Image类的常用属性
  方法 说明
  Image.format 图像格式或来源,若图像不是从文件读取,返回None
  Image.mode 图像的色彩模式,’L’为灰度模式,’RGB’为真彩色图像,’C(青)M(品红)Y(黄)K(黑)’为出版图像
  Image.size 图像的宽度和高度,单位是像素(px),返回值为元组类型
  Image.palette 调色板属性,返回ImagePalette类型
4.Image类的序列图像操作方法
  方法 说明
  Image.seek(frame) 跳转并返回图像中的指定帧
  Image.tell() 返回当前帧的序号
5.Image类的图像旋转和缩放方法
  方法 说明
  Image.resize(size) 返回按size大小调整图像的副本
  Image.rotate(angle) 返回按angle角度旋转图像的副本
6.Image类的图像转换和保存方法
  方法 说明
  Image.save(filename,format) 将图像保存为filename文件名,format格式
  Image.convert(mode) 将图像转换为mode模式
  Image.thumbnail(size) 创建图像的缩略图,size是缩略图尺寸的元组
代码如下:

1 # -*- encoding:utf-8 -*-
2 ''' 改变颜色 --- 颜色反转'''
3 from PIL import Image
4 nest = Image.open("D:\\360安全浏览器下载\人类第一张黑洞图.jpg")
5 r,g,b = nest.split() #获取原图的RGB通道的颜色值
6 newb = b.point(lambda i:i*1.1) #将B通道的颜色值增强
7 nest1 = Image.merge(nest.mode,(b,g,r))
8 nest1.thumbnail((400,254)) #创建缩略图
9 nest1.save("D:\\360安全浏览器下载\人类第一张黑洞图2.jpg")

效果如下显示:
原图:效果图:

7.Image类的图像像素和通道处理方法
  方法 说明
  Image.point(func) 根据函数func的功能对每个元素进行运算,返回图像副本
  Image.split() 根据GRB图像的每个颜色通道,返回图像副本
  Image.merge(mode,bands) 合成通道,其中mode为色彩,bands为新的色彩通道
  Image.blend(im1,im2,alpha) 将2张图片im1和im2按照公式插值后生成新图像公式:im1*(1.0 - alpha) + im2*alpha
四、使用库函数ImageFilter类 —— 图像过滤
  调用ImageFilter类:
      from PIL import ImageFilter  2. ImageFilter类预定义图像过滤方法
  方法 说明
  ImageFilter.BLUR 图像的模糊效果
  ImageFilter.CONTOUR 图像的轮廓效果
  ImageFilter.DETAIL 图像的细节效果
  ImageFilter.EDGE_ENHANCE 图像的边界加强效果
  ImageFilter.EDGE_ENHANCE_MORE 图像的阈值边界加强效果
  ImageFilter.EMBOSS 图像的浮雕效果
  ImageFilter.FIND_EDGES 图像的边界效果
  ImageFilter.SMOOTH 图像的平滑效果
  ImageFilter.SMOOTH_MORE 图像的阈值平滑效果
  ImageFilter.SHARPEN 图像的锐化效果

用例子说明:代码如下:

1 # -*- encoding:utf-8 -*-
2 ''' 轮廓效果 --- 素描 '''
3 from PIL import Image
4 from PIL import ImageFilter
5 square = Image.open("D:\\360安全浏览器下载\宝宝不开心.jpg")
6 square1 = square.filter(ImageFilter.CONTOUR) #选择轮廓效果
7 square1.save("D:\\360安全浏览器下载\宝宝不开心2.jpg")

原图片:效果图片:

五、使用库函数ImageEnhance类 —— 图像增强
  ImageEnhance类图像增强与滤镜方法
  方法 说明
  ImageEnhance.enhance(factor) 对所选属性的数值增强factor倍
  ImageEnhance.Color(im) 调整图像的颜色平衡
  ImageEnhance.Contrast(im) 调整图像的对比度
  ImageEnhance.Brightness(im) 调整图像的亮度
  ImageEnhance.Sharpness(im) 调整图像的锐度
代码如下:

1 # -*- encoding:utf-8 -*-
2 ''' 亮度增强 --- 曝光 '''
3 from PIL import Image
4 from PIL import ImageEnhance
5 gz = Image.open("D:\\360安全浏览器下载\人类第一张黑洞图.jpg")
6 gz1 = ImageEnhance.Brightness(gz) #选择亮度
7 gz1.enhance(2).save("D:\\360安全浏览器下载\人类第一张黑洞图3.jpg") #将亮度增强2倍后保存

原图:效果如下:

六、制作gif图片

 1 # -*- encoding:utf-8 -*-
 2 ''' 制作GIF图 '''
 3 import imageio
 4 savename = "D:\\my.gif"
 5 #准备制作的图像名称
 6 filenames = ["D:\\72.png","D:\\33.png","D:\\55.png","D:\\菜3.png","D:\\蔡徐坤2.png","D:\\表情.jpg","D:\\小狗.jpg"]
 7 frames = []
 8 for name in filenames:
 9 frames.append(imageio.imread(name))
10 imageio.mimsave(savename,frames,'GIF',duration=1)

gif图如下:

 

七、程序字符画绘制:

 1 #e12.1DrawCharImage
 2 from PIL import Image
 3 ascii_char = list(' %')#为了使字符画明显,这里仅使用‘ ’和‘%’
 4 def get_char(r, b, g, alpha=256):
 5     if alpha == 0:
 6         return ' '
 7     gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
 8     unit = 256 / len(ascii_char)
 9     return ascii_char[int(gray//unit)]
10 def main():
11     im = Image.open('D:\\360安全浏览器下载\小猪佩奇2.jpg')
12     WIDTH, HEIGHT = 100, 60
13     im = im.resize((WIDTH, HEIGHT))
14     txt = ""
15     for i in range(HEIGHT):
16         for j in range(WIDTH):
17             txt += get_char(*im.getpixel((j, i)))
18         txt += '\n'
19     fo = open("D:\\360安全浏览器下载\小猪佩奇.txt","w")
20     fo.write(txt)
21     fo.close()
22 main()

 原图:字符画:

posted @ 2019-04-10 14:13  丹心陈  阅读(312)  评论(0)    收藏  举报