Python图像处理_pillow模块

一.pillow描述

pillow模块提供了广泛的文件格式支持、高效的内部表示和非常强大的图像处理功能,其中的核心是Image模块

二.pillow模块的常用子模块

子模块说明
ImageImage模块提供了一个同名的类来表示PIL图像,该模块还提供了许多工厂功能,包括从文件加载图像和创建新图像的功能
ImageDrawImageDraw模块为图像对象提供了简单的二维(2D)图形,可以使用此模块创建新图像,注释或修改现有图像,以及动态生成图像供Web使用
ImageGrabImageGrab模块可用于将屏幕或剪贴板的内容复制到PIL图像内存
ImageFilterImageFilter模块包含一组预定义的滤镜,可以与Image.filter()方法一起使用
ImageColorImageColor模块包含颜色表和从CSS3风格的颜色说明符到RGB元组的转换器。这个模块由PIL.Image.new()和ImageDraw等模块使用
ImageFontImageFont模块定义了一个同名的类,配合PIL.ImageDraw.Draw.text()方法使用

三.pillow模块支持的图像模式

图像模式说明
1黑白,每个像素用1为表示,但存储时每个像素占用1字节
L黑白,每个像素用1字节表示
P调色板映射,每个像素用1字节表示
RGB红、绿、蓝,3个通道,每个像素用1字节表示
RGBA红、绿、蓝和透明,4个通道,每个像素用1字节表示
CMYK颜色隔离模式,4个通道,每个像素用1字节表示
YCbCr亮度、蓝色差、红色差,3个通道,每个像素用1字节表示
I每个像素用4字节整形表示
F每个像素用4字节浮点型表示

四.使用介绍

  1. 安装和导入pillow模块

    pip install pillow
    
    from PIL import Image, ImageDraw, ImageGrab
    from PIL import ImageFilter, ImageFont, ImageColor
    
  2. 打开和保存图像文件

    # 打开图像文件
    im = Image.open(r'testpic.jpg')
    # 图像模式
    print(im.mode)
    # 图像分辨率
    print(im.size)
    # 调用系统默认的图像查看工具显示图像
    im.show()
    # 将RGB模式转为L模式
    im_gray = im.convert('L')
    im_gray.show()
    # 图像模式
    print(im_gray.mode)
    im_gray.save('new_testpic.jpg')
    
  3. 通道和并与拆分

    # 打开图像文件
    im = Image.open(r'testpic.jpg')
    # 将RGB图像拆分成独立的3个通道
    r, g, b = im.split()
    # 保存绿色通道为文件
    g.save(r'testpic_g.jpg')
    # 交换红色、蓝色通道,得到特殊的效果
    im_bgr = Image.merge('RGB', (b, g, r))
    # 保存交换通道后的图像
    im_bgr.save(r'testpicb_bgr.jpg')
    
  4. 旋转、缩放、裁切、复制与粘贴

    # 打开图像文件
    im = Image.open(r'testpic.jpg')
    # 逆时针旋转30°,以原图分辨率返回新图像
    im_30 = im.rotate(30)
    im_30.show()
    print(im_30.size)
    im_30.save(r'testpicnew.jpg')
    # 逆时针旋转30°,返回扩展的新图像
    im.rotate(30, expand=True).show()
    # 裁切250*150的局部图像
    im_box = im.crop((150, 50, 400, 200))
    # 复制这个局部图像,不是粘贴的必要条件,这里主要用来演示复制功能
    im_copy = im_box.copy()
    # 粘贴到地图的右下角
    im.paste(im_copy, (350, 450))
    im.show()
    # 保存粘贴后的图像
    im.save(r'testpicpaste.jpg')
    
  5. 使用滤镜

    im = Image.open(r'testpic.jpg')
    # 使用增强滤镜
    im.filter(ImageFilter.DETAIL).show()
    # 使用模糊滤镜
    im.filter(ImageFilter.BLUR).show()
    # 使用轮廓滤镜
    im.filter(ImageFilter.CONTOUR).show()
    # 使用勾画边界滤镜
    im.filter(ImageFilter.FIND_EDGES).show()
    
  6. 绘图

    im = Image.new("RGB", (800, 300), color=(32, 64, 128))
    draw = ImageDraw.Draw(im)
    draw.line((0, 200, 800, 200), width=2, fill=(255, 255, 255))
    draw.arc([20, 20, 180, 180], 0, 270, fill=(0, 255, 255))
    draw.arc([200, 40, 360, 160], 0, 360, fill=(0, 255, 255))
    draw.pieslice([380, 20, 540, 180], 30, 330, fill='red', outline='white')
    draw.ellipse([380, 20, 540, 180], fill='yellow', outline='white')
    draw.point([660, 100, 670, 100, 680, 100], fill='red')
    draw.rectangle([100, 220, 700, 280], fill=(64, 192, 192), outline='white')
    font = ImageFont.truetype("simfang.ttf", 32)
    draw.text([130, 230], "人生苦短,我用Python", font=font, fill='white')
    im.show()
    
  7. 截屏

    # 截取大小为720*480的屏幕区域
    im = ImageGrab.grab((1200, 600, 1920, 1080))
    im.show()
    # 截取整个屏幕
    im = ImageGrab.grab()
    im.show()
    
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值