欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python图像处理库Pillow常用使用方法

程序员文章站 2024-01-12 19:00:52
PIL(Python Imaging Library)是Python一个强大方便的图像处理库,只支持到Python2.7。 Pillow是PIL的一个派生分支,在Python3标准库中用Pillow代替PIL。 Pillow官网:https://pillow.readthedocs.io/en/... ......

pil(python imaging library)是python一个强大方便的图像处理库,只支持到python2.7。
pillow是pil的一个派生分支,在python3中用pillow代替pil。
pillow官网:

下面是使用例子,用法可见代码注释。

from pil import image,imagefilter,imagegrab,imagedraw,imagefont

# 创建图片:宽800*高600,红色
imnew = image.new('rgb',(800,600),(255,0,0))

# 显示图片
#imnew.show()

# 抓取屏幕
imgrab = imagegrab.grab()
imgrab.save('grab.jpg', 'jpeg')

# 打开图片
im = image.open('1.jpg')

# 复制图片
im1 = im.copy()
im2 = im.copy()
im3 = im.copy()
im4 = im.copy()
im5 = im.copy()
im6 = im.copy()
im7 = im.copy()

# 获得图片宽高:
w, h = im.size
print('图片宽高:{} * {}'.format(w, h))

# 缩略图(图片不会被拉伸,只能缩小)
im.thumbnail((w//2, h//2))
im.save('1_thumbnail.jpg', 'jpeg')

# 缩放(图片可能会被拉伸,可缩小也可放大)
im1 = im1.resize((w//2, h//2))
im1.save('1_resize.jpg', 'jpeg')

# 模糊图片
im2 = im2.filter(imagefilter.blur)
im2.save('1_blur.jpg', 'jpeg')

# 旋转图片,逆时钟旋转45度
im3 = im3.rotate(45)
im3.save('1_rotate.jpg', 'jpeg')

# 图片转换:左右转换 flip_left_right,上下转换 flip_top_bottom
im4 = im4.transpose(image.flip_left_right)
im4.save('1_transpose.jpg', 'jpeg')

# 图片裁剪
box = (200,200,400,400) #左上角(0,0),4元组表示坐标位置:左、上、右、下
im5 = im5.crop(box)
im5.save('1_crop.jpg', 'jpeg')

# 图片上添加文字
draw = imagedraw.draw(im6)
#truetype设置字体、文字大小
#stxingka.ttf华文行楷 simkai.ttf 楷体 simli.ttf 隶书
font = imagefont.truetype("c:\\windows\\fonts\\stxingka.ttf", 20) 
draw.text((100,100), ('hello word \n你好,世界'), fill='#0000ff', font=font)
im6.save('1_drawtext.jpg', 'jpeg')

# 图片上添加图片(粘贴图片)
imtmp = image.new('rgb',(30,30),'blue')
im7.paste(imtmp, (50,50)) #第2个参数为坐标
im7.save('1_paste.jpg','jpeg')


# 图片横向拼接:拼接上面im6、im7(两张图片大小一样)
im6width, im6height = im6.size
imhorizontal = image.new('rgb', (im6width * 2, im6height))
imhorizontal.paste(im6, (0,0))
imhorizontal.paste(im7, (im6width,0))
imhorizontal.save('1_horizontal.jpg', 'jpeg')

# 图片竖向拼接:拼接上面im6、im7
imvertical = image.new('rgb', (im6width, im6height*2))
imvertical.paste(im6, (0,0))
imvertical.paste(im7, (0,im6height))
imvertical.save('1_vertical.jpg', 'jpeg')