Python_12_pillow图像处理

Python高级编程之pillow图像处理

PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。

由于PIL仅支持到Python 2.7,一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性

安装Pillow

需要在命令行下通过pip安装:

$ sudo pip install pillow


操作图像

来看看最常见的将图像缩小一半操作,只需三四行代码:

#-*- coding:UTF-8 –*-
#! /usr/bin/env python
#coding=utf-8
#!/usr/bin/python

from PIL import Image
import crash_ipy
import os

# 当前路径是:/Users/beyond
print os.getcwd()
img = Image.open("./sg_python/sora.jpg")
imgWidth,imgHeight = img.size
print "origin W:%d and H:%d" % (imgWidth,imgHeight)
#缩小到一半,注意:参数是个元组
#// 取整除 - 返回商的整数部分
img.thumbnail((imgWidth//2,imgHeight//2))
#保存
img.save("./sg_python/sora_half.jpg","jpeg")

其他功能如模糊效果也只需几行代码:

#-*- coding:UTF-8 –*-
#! /usr/bin/env python
#coding=utf-8
#!/usr/bin/python

from PIL import Image
from PIL import ImageFilter
import crash_ipy
import os

# 当前路径是:/Users/beyond
print os.getcwd()
img = Image.open("./sg_python/sora.jpg")
#模糊半径不能调节吗???
img_blur = img.filter(ImageFilter.BLUR)

#保存
img_blur.save("./sg_python/sora_blur.jpg","jpeg")

PIL的 ImageDraw 提供了一系列绘图方法,让我们可以直接绘图。比如要生成字母验证码图片,代码只要仅仅几行:

#-*- coding:UTF-8 –*-
#! /usr/bin/env python
#coding=utf-8
#!/usr/bin/python
import ipython_debug
#生成二维码
from PIL import Image,ImageDraw,ImageFont,ImageFilter
import random

#生成随机数
def randomChar():
   randomInt = random.randint(65,90)
   return chr(randomInt)

#生成随机浅和深颜色
def randomWhiteColor():
      return (random.randint(125,255),random.randint(125,255),random.randint(125,255))
def randomBlackColor():
      return (random.randint(0,125),random.randint(0,125),random.randint(0,125))
#生成4个字符验证码      
charNumbers = 4      
canvasWidth = charNumbers * 60
canvasHeight = 60
img = Image.new('RGB',(canvasWidth,canvasHeight),(255,255,255))      
#文字
fnt = ImageFont.truetype('/Library/Fonts/Arial.ttf',36)
#一张素洁的画布
canvas = ImageDraw.Draw(img)
#将画布的每个点上色
for x in range(canvasWidth):
   for y in range(canvasHeight):
      canvas.point((x,y),fill = randomWhiteColor())
#在画布上绘制文字
codeStr = ''
for posIndex in range(charNumbers):
   tmpChar = randomChar()
   codeStr = codeStr+tmpChar
   canvas.text((10+posIndex*60,10),tmpChar,font = fnt,fill = randomBlackColor())
#模糊
img = img.filter(ImageFilter.BLUR)
#创建文件
targetFilePath = '/Users/beyond/sg_python/randomchar_'+codeStr+'.jpg'
img.save(targetFilePath,'jpeg')

果图如下:

Python_12_pillow图像处理_第1张图片



要详细了解PIL的强大功能,请请参考Pillow官方文档:

https://pillow.readthedocs.org/

小结

PIL提供了操作图像的强大功能,可以通过简单的代码完成复杂的图像处理。















你可能感兴趣的:(Python2.x,Python,PIL,Pillow,图像处理)