当前位置:脚本大全 > > 正文

pythonpil安装包(基于Python的PIL库学习详解)

时间:2021-10-14 00:59:03类别:脚本大全

pythonpil安装包

基于Python的PIL库学习详解

摘要

对于图像识别,大量的工作在于图像的处理,处理效果好,那么才能很好地识别,因此,良好的图像处理是识别的基础。在python中,有一个优秀的图像处理框架,就是pil库,本博文会分模块,介绍pil库中的各种方法,并列举相关例子。

参考:http://pillow-cn.readthedocs.io/zh_cn/latest/reference/index.html

网站上列举了pil库中所有的模块和方法,但是没有相关的例子,博文中会尽量给出相关的例子和进行简单的讲解。

基于的环境:win10,python2.7,pil 1.1.7。

image模块

开篇的例子

首先,给出image模块中的一个简单的例子。例子实现的功能是:读取图片,并进行45°旋转,然后进行可视化。

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • # -*- coding:utf-8 -*-
  • # image模块开篇例子
  • from pil import image
  • im = image.open('test.bmp') # 读取图片
  • im.rotate(45).show() # 将图片旋转,并用系统自带的图片工具显示图片
  • 创建缩略图

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • # -*- coding:utf-8 -*-
  • # pil中创建缩略图(create thumbnails)
  • from pil import image
  • import glob,os
  •  
  • size = 128,128
  •  
  • for infile in glob.glob("*.jpg"): # glob的作用是文件搜索,返回的是一个列表
  •   file,ext = os.path.splitext(infile) # 将文件的文件名和拓展名分开,用于之后的保存重命名
  •   im = image.open(infile)
  •   im.thumbnail(size,image.antialias) # 等比例缩放
  •   im.save(file+".thumbnail","jpeg")
  •   #im.show() # 显示缩略图
  •   #print im.size,im.mode
  • 缩略图不能直接双击打开,而可以使用pil.image的open读取,然后使用show()方法进行显示。

    图像处理

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • pil.image.alpha_composite(im1,im2)
  •  
  • pil.image.blend(im1,im2,alpha)
  •  
  • pil.image.composite(im1,im2,mask)
  • 这三个方法都属于图片的合成或者融合。都要求im1和im2的mode和size要一致,alpha代表图片占比的意思,而mask是mode可以为”1”,”l”或者”rgba”的size和im1、im2一致的。

  • ?
  • 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-8 -*-
  • from pil import image
  • # 图片合成
  •  
  • # pil的alpha_composite(im1,im2) 图像通道融合
  • # im2要和im1的size和mode一致,且要求格式为rgba
  • im1 = image.open("test.png")
  • im2 = image.open("test2.png")
  •  
  • newim1 = image.alpha_composite(im1,im2) # 将im2合成到im1中,如果其一是透明的,
  • # 才能看到结果,不然最终结果只会显示出im2
  • newim1.show()
  • #print(im1.mode)
  •  
  • # -----------------------------------------
  • # image.blend(im1,im2,alpha)
  • # alpha为透明度
  • newim2 = image.blend(im1,im2,0.5)
  • newim2.show()
  •  
  • # -----------------------------------------
  • mask = image.open("mask.png")
  • newim3 = image.composite(im2,im1,mask)
  • newim3.show()
  • pil.image.eval(image,*args)

    程序:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • # -*- coding:utf-8 -*-
  • from pil import image
  • im = image.open("test.png")
  •  
  • imnew = image.eval(im,lambda i:i*2) # 将原图片的像素点,都乘2,返回的是一个image对象
  • #print imnew.mode
  • imnew.show()
  • im.show()
  • 创建图像

    (1) pil.image.new(mode,size,color=0)

    使用模式和大小,创建一个新的图像。其中,mode可以是”l”,”rgb”,”rgba”;而size则是一个tuple(元组),color应该和mode相对应。

    下面例子,分别创建”l”、”rgb”和”rgba”的图片。

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • # -*- coding:utf-8 -*-
  • from pil import image
  • # 创建图像
  • # 创建一个灰度图像
  •  
  • newl = image.new("l",(28,28),255)
  • newl.show()
  •  
  • # 创建一个rgb图像
  • newrgb = image.new("rgb",(28,28),(20,200,45))
  • newrgb.show()
  •  
  • newrgba = image.new("rgba",(28,28),(20,200,45,255))
  • newrgba.show()
  • print "the frist image:",newl.size,newl.mode
  • print "the second image:",newrgb.size,newrgb.mode
  • print "the third image:",newrgba.size,newrgba.mode
  • (2)以其他形式创建图像

    a. 以数组的形式创建图像,pil.image.fromarray(obj,mode=none)

    obj - 图像的数组,类型可以是numpy.array()

    mode - 如果不给出,会自动判断

    本人觉得这个功能还是挺实用的,可以将一个数组(具体一点就是像素数组)转换为图像,从图像的本质去处理图像。

    下面一段程序,就是用fromarray()函数实现图像的灰度化(使用了两种方法)。

  • ?
  • 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-8 -*-
  • from pil import image
  • import numpy as np
  • a = image.open("fromimg.png")
  • a.show()
  • b = a.resize((28,28))
  • datab = list(b.getdata())
  • #print type(datab)
  • obj1 = []
  • obj2 = []
  • for i in range(len(datab)):
  •   obj1.append([sum(datab[i])/3]) # 灰度化方法1:rgb三个分量的均值
  •   obj2.append([0.3*datab[i][0]+0.59*datab[i][1]+0.11*datab[i][2]])
  •   #灰度化方法2:根据亮度与rgb三个分量的对应关系:y=0.3*r+0.59*g+0.11*b
  •  
  • obj1 = np.array(obj1).reshape((28,28))
  • obj2 = np.array(obj2).reshape((28,28))
  • print obj1
  • print obj2
  •  
  • arrayimg1 = image.fromarray(obj1)
  • arrayimg2 = image.fromarray(obj2)
  • arrayimg1.show()
  • arrayimg2.show()
  • 显然,两种方法都能成功灰度化。

    还有:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • pil.image.frombytes(mode,size,data,decoder_name='raw',*args)
  •  
  • pil.image.fromstring(*args,**kw)
  •  
  • pil.image.frombuffer(mode,size,data,decoder_name='raw',*args)
  • 感觉不常用,没有仔细研究。

    image模块下的image类

    下面的image是一个图像对象,而不是模块!

    (1) image.convert(mode=none,matrix=none,dither=none,palette=0,color=256)

    该方法,同样可以实现上面的灰度化处理。

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • # -*- coding:utf-8 -*-
  • from pil import image
  • img = image.open("test.png")
  • # 灰度化:将rgb/rgba -> l
  • img = img.convert("l")
  • img.show()
  • (2) image.copy()

    将读取的图片复制一份。

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • # -*- coding:utf-8 -*-
  • from pil import image
  • img = image.open("test.png")
  • # 灰度化:将rgb/rgba -> l
  • img = img.convert("l")
  • #img.show()
  •  
  • # ------ copy()----------
  • img1 = img.copy()
  • img1.show()
  • 将灰度化的图片复制一份,因此该程序的运行结果和之前的一致。

    (3) image.filter(filter)

    该函数是用于图像滤波的,pil中自带了很多的滤波器,就是括号中的filter的参数。filter应该是一个imaagefilter模块下的对象。这里把imagefilter模块讲了。其实,该模块就是提供滤波器。自带的滤波器有:

    使用中值滤波:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • # -*- coding:utf-8 -*-
  • from pil import image
  • from pil import imagefilter
  •  
  • # blur - 模糊处理
  • # contour - 轮廓处理
  • # detail - 增强
  • # edge_enhance - 将图像的边缘描绘得更清楚
  • # edge_enhance_nore - 程度比edge_enhance更强
  • # emboss - 产生浮雕效果
  • # smooth - 效果与edge_enhance相反,将轮廓柔和
  • # smooth_more - 更柔和
  • # sharpen - 效果有点像detail
  • testimg = image.open("filter1.png")
  • testimg.show()
  • filterimg = testimg.filter(imagefilter.medianfilter)
  • filterimg.show()
  • (4) 使用各种方法/函数获取图片的基本信息

    image.getbands()

    image.geebbox()

    image.getcolors(maxcolor=256)

    image.getdata(band=none)(一般和list()结合使用)

    image.getextrema()

    image.getpixel((x,y))

    image.histogram(mask=none,extrema=none)

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • # -*- coding:utf-8 -*-
  • from pil import image
  • img1 = image.open("test.png")
  • img1.show()
  •  
  • # getbands() - 显示该图像的所有通道,返回一个tuple
  • bands = img1.getbands()
  • print bands
  •  
  • # getbbox() - 返回一个像素坐标,4个元素的tuple
  • bboxs = img1.getbbox()
  • print bboxs
  •  
  • # getcolors() - 返回像素信息,是一个含有元素的列表[(该种像素的数量,(该种像素)),(...),...]
  • colors = img1.getcolors()
  • print colors
  •  
  • # getdata() - 返回图片所有的像素值,要使用list()才能显示出具体数值
  • #data = list(img1.getdata())
  • #print data
  •  
  • # getextrema() - 获取图像中每个通道的像素最小和最大值,是一个tuple类型
  • extremas = img1.getextrema()
  • print extremas
  •  
  • # getpixel() - 获取该坐标
  • pixels = img1.getpixel((87,180))
  • print pixels
  •  
  • # histogram() - 返回图片的像素直方图
  • print(img1.histogram())
  • 运行结果:

    ('r', 'g', 'b', 'a')
    (0, 0, 338, 238)
    [(73463, (255, 255, 255, 255)), (32, (252, 249, 252, 255)), (1, (255, 189, 143, 255)), (12, (255, 199, 160, 255)), (22, (247, 239, 247, 255)), (3, (255, 242, 246, 255)), (9, (238, 221, 238, 255)), (9, (235, 215, 235, 255)), (5, (232, 209, 232, 255)), (1, (255, 228, 209, 255)), (2, (255, 210, 225, 255)), (1, (255, 202, 201, 255)), (3, (255, 158, 92, 255)), (22, (218, 181, 218, 255)), (1, (217, 181, 218, 255)), (2, (255, 232, 217, 255)), (16, (255, 195, 153, 255)), (22, (212, 169, 212, 255)), (3, (211, 169, 212, 255)), (1, (204, 153, 204, 255)), (1, (255, 229, 238, 255)), (53, (255, 131, 46, 255)), (9, (255, 203, 167, 255)), (1, (255, 157, 90, 255)), (3, (186, 119, 187, 255)), (2, (255, 217, 229, 255)), (6, (183, 113, 184, 255)), (1, (255, 212, 227, 255)), (14, (214, 175, 215, 255)), (2, (255, 182, 131, 255)), (12, (166, 79, 167, 255)), (2, (255, 180, 127, 255)), (4309, (255, 127, 39, 255)), (737, (163, 73, 164, 255)), (4, (255, 252, 253, 255)), (3, (255, 232, 216, 255)), (9, (255, 250, 233, 255)), (1, (255, 245, 248, 255)), (34, (255, 239, 228, 255)), (3, (255, 142, 64, 255)), (1, (255, 162, 98, 255)), (19, (255, 247, 241, 255)), (7, (255, 223, 201, 255)), (2, (255, 133, 49, 255)), (16, (255, 221, 232, 255)), (58, (255, 235, 221, 255)), (1, (255, 225, 204, 255)), (2, (255, 219, 194, 255)), (21, (255, 175, 120, 255)), (6, (255, 182, 206, 255)), (37, (255, 243, 235, 255)), (3, (255, 179, 127, 255)), (6, (255, 207, 223, 255)), (3, (255, 232, 240, 255)), (1, (255, 134, 51, 255)), (2, (255, 222, 233, 255)), (2, (255, 218, 192, 255)), (1, (255, 186, 186, 255)), (1, (255, 163, 99, 255)), (1, (255, 207, 173, 255)), (8, (255, 151, 80, 255)), (1, (255, 184, 201, 255)), (19, (255, 211, 180, 255)), (1, (255, 143, 65, 255)), (9, (255, 233, 158, 255)), (18, (255, 215, 187, 255)), (1, (255, 185, 136, 255)), (7, (255, 227, 237, 255)), (22, (255, 163, 100, 255)), (1, (255, 221, 198, 255)), (5, (255, 184, 208, 255)), (10, (255, 195, 215, 255)), (5, (255, 239, 182, 255)), (1, (255, 197, 157, 255)), (1, (255, 154, 85, 255)), (1, (255, 136, 55, 255)), (8, (255, 240, 190, 255)), (14, (255, 216, 229, 255)), (3, (255, 179, 204, 255)), (1, (255, 143, 67, 255)), (1, (255, 196, 155, 255)), (19, (255, 249, 227, 255)), (2, (255, 211, 181, 255)), (10, (255, 230, 142, 255)), (4, (255, 187, 140, 255)), (195, (255, 201, 14, 255)), (2, (255, 129, 42, 255)), (1, (255, 131, 47, 255)), (12, (255, 231, 214, 255)), (1, (255, 181, 151, 255)), (8, (249, 244, 249, 255)), (13, (246, 238, 246, 255)), (44, (244, 234, 244, 255)), (1, (243, 232, 244, 255)), (7, (240, 226, 241, 255)), (25, (255, 167, 107, 255)), (24, (255, 215, 229, 255)), (22, (230, 206, 230, 255)), (6, (229, 204, 229, 255)), (3, (255, 130, 45, 255)), (11, (227, 200, 228, 255)), (4, (226, 198, 226, 255)), (3, (255, 127, 40, 255)), (5, (223, 192, 223, 255)), (9, (220, 186, 221, 255)), (172, (255, 174, 201, 255)), (16, (255, 231, 239, 255)), (1, (255, 171, 113, 255)), (33, (209, 164, 209, 255)), (1, (255, 192, 213, 255)), (6, (255, 247, 250, 255)), (2, (255, 136, 54, 255)), (9, (255, 253, 247, 255)), (1, (255, 171, 114, 255)), (2, (255, 147, 73, 255)), (5, (255, 181, 130, 255)), (7, (189, 124, 190, 255)), (1, (255, 199, 161, 255)), (13, (255, 183, 134, 255)), (3, (255, 152, 82, 255)), (2, (255, 156, 88, 255)), (32, (255, 143, 66, 255)), (5, (178, 102, 178, 255)), (6, (175, 96, 176, 255)), (8, (255, 129, 43, 255)), (4, (172, 90, 173, 255)), (1, (255, 168, 109, 255)), (1, (255, 153, 83, 255)), (1, (255, 174, 118, 255)), (1, (255, 172, 115, 255)), (1, (255, 148, 75, 255)), (8, (255, 244, 248, 255)), (1, (255, 130, 43, 255)), (5, (255, 205, 222, 255)), (1, (255, 210, 177, 255)), (1, (255, 170, 110, 255)), (1, (255, 157, 89, 255)), (1, (255, 197, 134, 255)), (13, (255, 155, 86, 255)), (3, (255, 137, 56, 255)), (2, (255, 138, 57, 255)), (11, (255, 227, 208, 255)), (1, (255, 190, 145, 255)), (2, (255, 155, 87, 255)), (1, (169, 84, 170, 255)), (4, (255, 202, 220, 255)), (6, (255, 139, 59, 255)), (1, (255, 128, 42, 255)), (1, (255, 158, 91, 255)), (1, (255, 198, 158, 255)), (5, (255, 130, 44, 255)), (1, (255, 202, 165, 255)), (1, (255, 187, 154, 255)), (1, (255, 132, 48, 255)), (1, (255, 154, 84, 255)), (1, (255, 235, 241, 255)), (7, (255, 135, 53, 255)), (62, (255, 159, 93, 255)), (2, (255, 177, 124, 255)), (4, (255, 187, 210, 255)), (11, (255, 251, 248, 255)), (1, (255, 229, 211, 255)), (1, (255, 208, 176, 255)), (1, (255, 133, 50, 255)), (2, (255, 219, 231, 255)), (2, (255, 141, 63, 255)), (2, (255, 146, 71, 255)), (1, (255, 160, 95, 255)), (2, (255, 184, 135, 255)), (1, (255, 208, 175, 255)), (1, (255, 139, 61, 255)), (1, (255, 189, 211, 255)), (2, (255, 145, 69, 255)), (263, (255, 191, 147, 255)), (4, (255, 187, 141, 255)), (3, (255, 250, 252, 255)), (1, (255, 147, 72, 255)), (5, (255, 177, 203, 255)), (1, (255, 169, 109, 255)), (62, (255, 207, 174, 255))]
    ((163, 255), (73, 255), (14, 255), (255, 255))
    (255, 127, 39, 255)
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 737, 0, 0, 12, 0, 0, 1, 0, 0, 4, 0, 0, 6, 0, 0, 5, 0, 0, 0, 0, 6, 0, 0, 3, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 33, 0, 3, 22, 0, 14, 0, 0, 1, 22, 0, 9, 0, 0, 5, 0, 0, 4, 11, 0, 6, 22, 0, 5, 0, 0, 9, 0, 0, 9, 0, 7, 0, 0, 1, 44, 0, 13, 22, 0, 8, 0, 0, 32, 0, 0, 79360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 737, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 7, 0, 0, 4312, 1, 10, 9, 54, 1, 3, 1, 7, 3, 3, 2, 7, 0, 2, 3, 34, 0, 2, 2, 3, 1, 0, 0, 8, 3, 2, 2, 15, 2, 2, 4, 62, 1, 0, 1, 23, 33, 0, 0, 25, 1, 26, 1, 2, 1, 0, 173, 35, 0, 7, 0, 6, 2, 29, 8, 13, 8, 1, 10, 13, 0, 2, 1, 263, 6, 0, 0, 26, 1, 2, 5, 13, 11, 195, 6, 9, 6, 5, 22, 69, 2, 5, 3, 21, 1, 0, 0, 51, 14, 2, 2, 4, 0, 26, 2, 7, 0, 1, 7, 18, 1, 2, 10, 28, 9, 9, 44, 59, 0, 0, 13, 61, 8, 0, 3, 37, 16, 1, 0, 25, 0, 51, 12, 11, 4, 9, 0, 73463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4309, 3, 0, 3, 9, 5, 3, 53, 1, 1, 2, 1, 1, 0, 7, 2, 1, 3, 2, 0, 6, 0, 1, 0, 2, 3, 1, 32, 1, 0, 2, 0, 2, 1, 2, 0, 1, 0, 0, 0, 0, 8, 0, 3, 1, 1, 1, 13, 2, 2, 1, 1, 1, 3, 62, 0, 1, 0, 0, 1, 1, 22, 0, 0, 0, 0, 0, 0, 25, 0, 2, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 21, 0, 0, 0, 2, 0, 0, 5, 0, 0, 5, 2, 0, 0, 14, 2, 1, 0, 0, 0, 4, 4, 10, 1, 0, 1, 0, 263, 0, 0, 0, 1, 0, 16, 1, 1, 0, 1, 10, 0, 12, 1, 0, 0, 737, 1, 0, 21, 0, 0, 1, 0, 0, 5, 62, 1, 7, 1, 5, 0, 19, 2, 5, 0, 6, 0, 1, 21, 0, 0, 15, 0, 2, 0, 2, 0, 0, 0, 1, 0, 0, 181, 0, 5, 5, 0, 6, 0, 16, 34, 4, 2, 25, 1, 12, 24, 3, 2, 23, 0, 4, 67, 5, 11, 0, 2, 4, 20, 45, 46, 22, 2, 21, 11, 0, 46, 0, 7, 10, 16, 3, 27, 0, 0, 45, 0, 16, 31, 20, 8, 6, 0, 35, 4, 0, 73463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80444]

    (5) 图像粘贴操作(paste)

    image.paste(im,box=none,maske=none)

    使用im粘贴到原图片中。注意:两个图片的mode和size要求一致,不一致可以使用convert()和resize()进行调整。

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • # -*- coding:utf-8 -*-
  • from pil import image
  • rawimg = image.open("qqtou.png")
  • print rawimg.size
  •  
  • im = image.open("number.png")
  • print im.size
  •  
  • # rawimg的size和im的size要相同,不然不能匹配
  • # paste(用来粘贴的图片,(位置坐标)),可以通过设置位置坐标来确定粘贴图片的位置
  • # 该方法没有返回值,直接作用于原图片
  • rawimg.paste(im,(75,-90))
  • rawimg.show()
  • (6) 各种put操作

    image.putalpha(alpha) - 添加多一层alpha层,没看出具体效果

    image.putdata(data,scale=1.0,offset=0.0) - 添加一个像素序列到原图像。

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • # -*- coding:utf-8 -*-
  • from pil import image
  •  
  • img = image.open("qqtou.png")
  • img = img.convert("l")
  • img.show()
  •  
  • 标签:

    猜您喜欢