PIL:是Python Image Library的缩写,图像处理的模块。Image,ImageFont,ImageDraw,ImageFilter

Image模块:

常用方法:

open()  #打开图片

new(mode,size,color)   #创建一张空白图片

save("test.gif","GIF")   #保存(新图片路径和名称,保存格式)

size()   #获取图片大小

thumbnail(weight,high)   #缩放图片大小(宽,高)

show()    #显示图片

blend(img1,img2,alpha)   #两张图片相加,alpha表示img1和img2的比例参数。

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

rotate(45)    #逆时针旋转45度

transpose()    #旋转图像
transpose(Image.FLIP_LEFT_RIGHT) #左右对换。
transpose(Image.FLIP_TOP_BOTTOM) #上下对换。
transpose(Image.ROTATE_90) #旋转 90 度角。
transpose(Image.ROTATE_180) #旋转 180 度角。
transpose(Image.ROTATE_270) #旋转 270 度角。 paste(im,box)#粘贴box大小的im到原先的图片对象中。 convert() #用来将图像转换为不同色彩模式。 filters() #滤镜
BLUR #虚化
EMBOSS
resize((128,128)) #resize成128*128像素大小 convert("RGBA") #图形类型转换 getpixel((4,4)) #获取某个像素位置的值 putpixel((4,4),(255,0,0)) #写入某个像素位置的值

实例:

import Image,ImageFilter

im = Image.open("E:\\QQ2.jpg")   #打开图片
w,h = im.size #获取图片的像素,其值为象素意义上的宽和高
print(im.format) #获取图片格式
print(im.size) #获取图片像素
im.thumbnail((w//2,h//2)) #缩放图片大小为原来的一半
im.save("E:\\QQ_backup.jpg",'jpeg') #保存图片,以及保存格式为jpeg
#im.show() #显示图片
print(im.mode) #显示模式。 RGB(true color image),此外还有,L(luminance),CMTK(pre-press image)。
box = (100,100,200,200)
s = im.crop(box) #图像中提取出某个矩形大小的图像。它接收一个四元素的元组作为参数,各元素为(left, upper, right, lower),坐标系统的原点(0, 0)是左上角。
#s.show()
#s = s.transpose(Image.ROTATE_180) #旋转180°
#im.paste(s,box) #粘贴
#im.show() im = Image.open("E:\\QQ2.jpg")
im2 = im.filter(ImageFilter.EMBOSS)
im2.save("E:\\QQ_2.jpg",'jpeg')
#im2.show() newImg = Image.new("RGBA",(640,480),(0,255,0)) #创建一张大小为640*480颜色为绿色的图片
newImg.save("E:\\newImg.png","PNG")

输出结果为:

JPEG
(640, 640)
RGB

ImageFont模块:存储bitmap字体,用于ImageDraw类的text()方法。

常用方法:

load()    #从指定的文件中加载一种字体,该函数返回对应的字体对象。如果该函数失败,将产生IOError异常。

load_path()   #和函数load()一样,但是如果没有指定当前路径的话,会从sys.path开始查找指定的字体文件。

truetype("C:\\Windows\\Fonts\\Arial.ttf", 18)   #加载字体对象,并且为指定字体的大小。

load_default()   #加载一个默认字体

getsize()   #返回给定文本的宽度和高度

getmask()   #为给定的文本返回一个位图.如果字体使用了抗锯齿,位图的模式为“L”,且其最大值为255。否则,它的模式为“1”。

ImageDraw模块:

常用方法:

(1)ImageDraw.Draw()   #对所有使用ImageDraw操作的图片,要进行对象的创建。

import ImageDraw

t = Image.new('RGB',(640,480),'blue')   #创建一张新图片
d = ImageDraw.Draw(t) #创建一个可操作对象
(2)t.line([xi,yi,x2,y2],options)   #以x1,y1为起点,x2,y2为终点画一条直线,也可以写成(x1,y1,x2,y2)或[(x1,y1),(x2,y2)]。options选项包含的fill选项规定直线的颜色。

import ImageDraw
import Image t = Image.new('RGB',(700,700),'yellow')
d = ImageDraw.Draw(t) d.line([100,100,100,600],fill=10)
d.line((100,100,600,100),fill='red')
d.line((600,100,600,600),fill='black')
d.line([(100,600),600,600],fill='blue')
t.show()
(3)d.arc([x1,y1,x2,y2],startAngle,endAngle,options)    #在左上角坐标为x1,y1,右下角坐标为x2,y2的矩形区域内满圆,以startAngle为起始角度,endAngle为终点角度,截取圆的一部分圆弧。如果x1,y1,xw,y2不是正方形,则在该区域内的最大椭圆中根据角度截取片段。

d.arc((100,100,600,600),0,90,fill='red')   #画一个上半圆弧
d.arc((100,100,600,400),90,270,fill='blue') #画一个右半椭圆
(4)d.ellipse([x1,y1,x2,y2],options)   #用法同arc,用于画圆(或者椭圆)。Options选项中fill表示将圆(或者椭圆)用指定颜色填满,outlie表示只规定圆的颜色。

d.ellipse((100,100,600,600),outline=128)  #画一个圆
d.ellipse((100,250,600,450),fill='blue') #在圆里画一个椭圆
(5)d.chord([x1,y1,x2,y2],startAngle,endAngle,options)   #用法与arc相同,用来画圆从startAngle到endAngle的弦。Options选项中fill表示将弦与圆弧之间空间用指定颜色填满,outlie表示只规定弦线的颜色。

d.ellipse((100,100,600,600),outline=128)   #画圆
d.chord((100,100,600,600),0,90,outline='red') #画一条弦
d.chord((100,100,600,600),90,180,fill='red') #画弦并且将弦与弧区域着色
(6)d.pieslice([x1,y1,x2,y2],startAngle,endAngle,options)   #用法与ellipse相同,用于画起始角度间的扇形区域。options选项中fill选项将扇形区域用指定颜色填满,outline选项只用指定颜色描出区域轮廓。

d.ellipse((100,100,600,600),outline=128)   #画一个圆
d.pieslice((100,100,600,600),180,210,outline=128) #在圆内画180度到210度的扇形区域轮廓
d.pieslice((100,100,600,600),60,90,fill='blue') #画60度到90度的扇形区域
(7)d.polygon([x1,y1,x2,y2...],options)   #根据坐标画多边形,Python会根据第一个参量中的xy坐标对,连接出整个图形。options选项中fill选项将多边形区域用指定颜色填满,outline选项只用指定颜色描出区域轮廓。

d.polygon([(200,200),(600,300),(300,600)],outline = "red")
d.polygon([(300,300),(500,300),(300,500),(500,500)],fill = "red")
t.show()
(8)d.rectangle([x1,y1,x2,y2],options)   #在给定区域内画一个矩形,(x1,y1)表示矩形左上角坐标值,(x2,y2)表示矩形右下角坐标值。options选项中fill选项将多边形区域用指定颜色填满,outline选项只用指定颜色描出区域轮廓。

d.rectangle((200,200,500,500),outline = "red")   #画矩阵
d.rectangle((250,300,450,400),fill = 128)
(9)d.text(position,  string,  options)   #Position是一个二元元组,指定字符串左上角坐标,string是要写入的字符串。options选项可以为fill或者font(只能选择其中之一作为第三参量,不能两个同同时存在,要改变字体颜色,见ImageFont模块中的NOTE)。其中fill指定字的颜色,font指定字体与字的尺寸,font必须为ImageFont中指定的font类型,具体用法见ImageFont.Truetype()。

#在空白图像上矩形区域内添加文字
text = "hello, python!"
d.rectangle((200,200,500,500),outline = "red")
d.text((300,350),text,"red")

实例1:

import Image,ImageFont,ImageDraw

image1 = Image.open("WALLPAPER.jpg")
draw = ImageDraw.Draw(image1) ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\STXINGKA.TTF",120)
draw.rectangle((180,100,900,900),outline = "red")
draw.text((200,400),"www.okorder.com",font=ft,fill="blue")
image1.save("new_wallpaper.jpg","JPEG")

实例2:生成验证码

#!/usr/bin/env python
# -*- coding:utf-8 -*- import Image, ImageDraw, ImageFont, ImageFilter
import random
# 随机字母:
def rndChar():
return chr(random.randint(65, 90))
# 随机颜色1:
def rndColor():
return (random.randint(64, 255), random.randint(64, 255),random.randint(64, 255))
# 随机颜色2:
def rndColor2():
return (random.randint(32, 127), random.randint(32, 127),random.randint(32, 127))
# 240 x 60:
width = 60 * 4
height = 60
image = Image.new('RGB', (width, height), (255, 255, 255))
# 创建Font对象:
font = ImageFont.truetype("C:\\Windows\\Fonts\\Arial.ttf", 36) #注意系统字体的路径
# 创建Draw对象:
draw = ImageDraw.Draw(image)
# 填充每个像素:
for x in range(width):
for y in range(height):
draw.point((x, y), fill=rndColor())
# 输出文字:
for t in range(4):
draw.text((60 * t + 10, 10), rndChar(), font=font,
fill=rndColor2())
# 模糊:
image = image.filter(ImageFilter.BLUR)
im = image.save('code.jpg', 'jpeg')
m = Image.open('code.jpg')
m.show()

输出结果为:

Python模块:PIL的更多相关文章

  1. max os 安装python模块PIL

    下载libjpeg和zlib: http://www.ijg.org/files/jpegsrc.v9.tar.gz http://zlib.net/zlib-1.2.8.tar.gz 安装libjp ...

  2. 使用Python的PIL模块来进行图片对比

    使用Python的PIL模块来进行图片对比 在使用google或者baidu搜图的时候会发现有一个图片颜色选项,感觉非常有意思,有人可能会想这肯定是人为的去划分的,呵呵,有这种可能,但是估计人会累死, ...

  3. Python基础篇【第5篇】: Python模块基础(一)

    模块 简介 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就 ...

  4. windows环境下安装python模块大招

    python发展到今天,感觉版本有点控制不住了,同时出现多个版本python2.5,python2.7 python 3 ,同时跨越windows,mac,*inux等多个平台,还有32位,64位等不 ...

  5. 50个很棒的Python模块

    50个很棒的Python模块 我很喜欢Python,Python具有强大的扩展能力,我列出了50个很棒的Python模块,包含几乎所有的需要:比如Databases,GUIs,Images, Soun ...

  6. Python深入:Distutils发布Python模块--转载

    https://blog.csdn.net/gqtcgq/article/details/49255995 Distutils可以用来在Python环境中构建和安装额外的模块.新的模块可以是纯Pyth ...

  7. python模块大全

    python模块大全2018年01月25日 13:38:55 mcj1314bb 阅读数:3049 pymatgen multidict yarl regex gvar tifffile jupyte ...

  8. python模块学习第 0000 题

    将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果: 好可爱>%<! 题目来源:https://github.com/Yixiao ...

  9. python开发_常用的python模块及安装方法

    adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctype ...

  10. [转]50个很棒的Python模块

    转自:http://www.cnblogs.com/foxhengxing/archive/2011/07/29/2120897.html Python具有强大的扩展能力,以下列出了50个很棒的Pyt ...

随机推荐

  1. 时间序列分析之ARIMA模型预测__R篇

    http://www.cnblogs.com/bicoffee/p/3838049.html

  2. nice-validator验证插件

    主要是作为form表单的验证,密码,确认密码的验证,远程验证的功能: 1:先导包:nice-validator 2:引入文件css,js 3: 使用 使用文档:http://www.niceue.co ...

  3. JAVA学习笔记(33-53)

    33:java中的多维数组,以二位为例: 创建方法:int[][] a = new int[2][3]; 建立一个5*5的数组. 或者下面的建立方法也可以: int[][] c = { {1, 2, ...

  4. AJAX实现跨域的三种种方法(代理,JSONP,XHR2)

    由于在工作中需要使用AJAX请求其他域名下的请求,但是会出现拒绝访问的情况,这是因为基于安全的考虑,AJAX只能访问本地的资源,而不能跨域访问. 比如说你的网站域名是aaa.com,想要通过AJAX请 ...

  5. Matrix QR Decomposition using OpenCV

    Matrix QR decomposition is very useful in least square fitting model. But there is no function avail ...

  6. Centos 6.5 下php5.6.2 的编译安装

    纯净的Centos 6.5系统 配置163yum源 (稍后会写一篇文档) 安装  开发软件包:yum  -y groupinstall  "Development Tools" 安 ...

  7. mysql 用source 导入数据库报错

    平时一直使用phpmyadmin或mysqldum进行导出,使用source命令导入数据库. 但换了新版本mysql后,上述导入方法出现以下错误: ERROR: Unknown command '\\ ...

  8. linux 学习15 16 启动管理,备份和恢复

    第十五讲 启动管理 . CentOS .x 启动管理 //此处指6.3 系统运行级别 .运行级别 运行级别 含 义 关机 单用户模式,可以想象为windows的安全模式,主要用于系统修复 //linu ...

  9. 修改C# 新建类模板

    找到安装路径下的这个文件夹:D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplatesCache\CSh ...

  10. Beat版本分工

    柯晓鸿031302613:负责服务器的搭建,struts2框架的配置,后台与页面的连整合,部分后台接口,数据库连接查询接口,以及页面js的书写 比例:40% 洪腾飞031302608:负责主要界面的书 ...