安装
Pillow和PIL不可以同时存在于系统环境中,大于等于1.0小于2.1.0的Pillow版本不支持import Image,请使用from PIL import Image;大于等于2.1.0的,请使用from PIL Image import core as imageing。
Pillow2.0.0以下的版本支持Python2.4到2.7的版本,2.00<=Pillow<4.0.0的版本支持Python2.6,2.7,3.2-3.5的版本;4.0.0<=Pliiow<5.0.0的版本支持Python2.7,3.3-3.6的版本;Pillow>=5.0.0的版本支持Python2.7,3.4,3.5,3.6的版本。
Pillow安装,直接通过在CMD中通过pip install pillow,其他一些与安装配置有关的相关问题请网上查阅。
函数
利用Image模块中的open()函数进行图像加载:
from PIL import Image
im=Image.open("1.jpg")
from __future__ import print_function
print(im.format,im.size,im.mode)
通过format表示图像的来源,size表示图像的长、宽,mode定义了图像中的数量、名称、像素类型和深度,常见的
分为三种:灰度图像亮度L,真彩图像RGB,印前图像CMYK。
im.show()
显示载入的图像
通过Image中的open和save分别对图像进行读写。
将文件转换成JPEG
from __future__ import print_function
import os,sys
from PIL import Image
for infile in sys.argv[1:]:
f,e=os.path.splitext(infile)
outfile=f+".jpg"
if infile !=outfile:
try:
Image.open(infile).save(outfile)
except IOError:
print("cannot convert",infile)
创建JPEG缩略图
from __future__ import print_function
import os,sys
from PIL import Image
size=(128,128)
for infile in sys.argv[1:]:
outfile=os.path.splitext(infile)[0]+".thumbnail"
if infile !=outfile:
try:
im=Image.open(infile)
im.thumbnail(size)
im.save(outfile,"JPEG")
except IOError:
print("cannot create thumbbail for",infile)
使用Image中的crop()函数进行矩形区域提取,box中的数字依次表示左上右下,提取出来的矩形是一个300*300的矩形
box=(100,100,400,400)
region=im.crop(box)
对矩形进行处理,并还原
region=region.transpose(Image.rotate_180)
im.paste(region,box)
图像滚动
def roll(image,delta):
#roll an image sideways
xsize,ysize=image.size
delta=delta%xsize
if delta==0:return image
part1=image.crop((0,0,delta,ysize))
part2=image.crop((delta,0,xsize,ysize))
part1.load()
part2.load()
image.paste(part2,(0,0,xsize-delta,ysize))
image.paste(part1,(xsize-delta,0,xsize,ysize))
return image
使用
r, g, b = im.split() im = Image.merge("RGB", (b, g, r))使用函数rotate()和transpose()进行角度选择
使用convert()进行"L"和"RGB"之间的模式转换test=im.convert("L")
增强过滤器
from PIL import ImageFilter
out=im.filter(ImageFilter.DETATL)
点操作
out=im.point(lambda i: i*1.2)
使用point()和paste()来选择性的修改图像,掩膜创造
source=im.split()
R,G,B=0,1,2
mask=source[R].point(lambda i : i<100 and 255)
out=source[G]point(lambda i : i * 0.7)
source[G].paste(out,None,mask)
im=Image.merge(im.mode,source)
掩膜创造的语法
imout=im.point(lambda i : expression and 255)
图像增强
from PIL import ImageEnhance
enh=ImageEnhance.Contrast(im)
enh.enhance(1.3).show("30% more contrast")
使用seek()和tell()对FLI/FLC/GIF视频之间进行帧数移动
from PIL import Image
im=Image.open("animation.gif")
im.seek(1)
try:
while 1:
im.seek(im.tell()+1)
except EOFError:
pass