首页 > 代码库 > Python模块:PIL

Python模块:PIL

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模块:

常用方法:

 

ImageDraw模块:

 

 

 

实例:生成验证码

#!/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