Python图像处理库Pillow基础使用指南
本文介绍Python中广泛使用的Pillow图像处理库,它作为PIL的现代化分支支持Python3。通过具体代码示例,详细演示了如何创建新图像、获取尺寸、进行缩略图生成、缩放、模糊、旋转以及水平与垂直拼接等常用操作,帮助开发者快速掌握基础图像处理技能。
Pillow库简介与背景
PIL(Python Image Library)是Python生态中一个重要的第三方图像处理库。凭借其强大的功能和极高的使用普及率,它实际上已被广泛视为Python事实上的官方图像处理标准库。
PIL拥有悠久的历史,早期仅支持Python 2.x版本。随后出现了移植至Python 3的兼容库Pillow,它被称为PIL的友好分支(friendly fork),功能与PIL相似,但明确支持Python 3环境。
PIL(Python Imaging Library)曾是Python中强大且便捷的图像处理工具,但其支持范围仅止步于Python 2.7版本。
Pillow是PIL的一个派生分支,目前在Python 3的标准库环境中,推荐使用Pillow来替代已停止维护的PIL。
Pillow的官方文档及资源位于:https://pillow.readthedocs.io/en/latest/handbook/index.html
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')
总结
以上内容介绍了Python图像处理库Pillow的常用使用方法,希望能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。同时也感谢大家对本站的支持! 如果本文对您有帮助,欢迎转载,请注明出处,谢谢!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









