zoukankan      html  css  js  c++  java
  • pillow模块常用方法

    一、代码

    from PIL import Image, ImageFilter
    from PIL import ImageGrab
    from PIL import ImageEnhance
    
    # 读取图像,展示图像
    im = Image.open(r"*****")
    # im.show()
    
    # 保存图像
    # im.save("")
    
    # format图像格式,size图像大小(320, 357)宽高,mode图像模式,常用的模式为:L为灰度图,RGB为真彩色,CMYK为pre-press图像,getbands显示该图像的所有通道
    # 每张图片都是由一个或者多个数据通道构成。PIL允许在单张图片中合成相同维数和深度的多个通道。以RGB图像为例,每张图片都是由三个数据通道构成,分别为R、G和B通道。而对于灰度图像,则只有一个通道。
    print(im.format, im.size, im.mode, im.info, im.getbands())
    
    r,g,b=im.split()   #分离三通道
    pic=Image.merge('RGB',(r,g,b)) #合并三通道
    pic.show()
    
    # 转换mode图像模式
    new_im = im.convert('L')
    # new_im.show()
    
    # 图像过滤
    # 高斯模糊
    im = im.filter(ImageFilter.GaussianBlur)
    # 普通模糊
    im = im.filter(ImageFilter.BLUR)
    # 边缘增强
    im = im.filter(ImageFilter.EDGE_ENHANCE)
    # 找到边缘
    im = im.filter(ImageFilter.FIND_EDGES)
    # 浮雕
    im = im.filter(ImageFilter.EMBOSS)
    # 轮廓
    im = im.filter(ImageFilter.CONTOUR)
    # 锐化
    im = im.filter(ImageFilter.SHARPEN)
    # 平滑
    im = im.filter(ImageFilter.SMOOTH)
    # 细节
    im = im.filter(ImageFilter.DETAIL)
    # 最后已经看不清图片了
    im.show()
    
    # 屏幕截图
    im = ImageGrab.grab((0,0,800,200)) #截取屏幕指定区域的图像
    im = ImageGrab.grab() #不带参数表示全屏幕截图
    
    # 图像裁剪与粘贴
    box = (120, 194, 220, 294) #定义裁剪区域
    region = im.crop(box) #裁剪
    region = region.transpose(Image.ROTATE_180)
    im.paste(region,box) #粘贴
    
    # 图像缩放
    im = im.resize((100,100)) #参数表示图像的新尺寸,分别表示宽度和高度
    
    
    #亮度增强
    enh_bri = ImageEnhance.Brightness(im)
    brightness = 1.5
    image_brightened = enh_bri.enhance(brightness)
    image_brightened.show()
    
    #色度增强
    enh_col = ImageEnhance.Color(im)
    color = 1.5
    image_colored = enh_col.enhance(color)
    image_colored.show()
    
    #对比度增强
    enh_con = ImageEnhance.Contrast(im)
    contrast = 1.5
    image_contrasted = enh_con.enhance(contrast)
    image_contrasted.show()
    
    #锐度增强
    enh_sha = ImageEnhance.Sharpness(im)
    sharpness = 3.0
    image_sharped = enh_sha.enhance(sharpness)
    image_sharped.show()

    # 读取base64
    import base64
    import io
    image = '''
    iVBORw0KGgoAAAANSUhEUgAAAB0AAAAOCAYAAADT0Rc6AAABdklEQVR42qWUMUgDQRBFDwsrsbGw
    EBEsLIJIOpEgIkgQK7tUV4iQIoiFnYi9hcgVQZBUYmEnInIIIQQLEUFSiIgIIiGlnVVKZ+EffL4T
    TnHhkezfnZ3d2b8XRX7bMIrUL0L7bVsy4rxJNaNBvBlN6jeh8ZwaNtJwuDVeBoxVs6RzxgqRGvvU
    3zUu8H/VKCMmsOaQGNcDxriC0R6S3RgfoGd8Gm0sErh0Sn1F44EnxLOWankLctKMAyzojRUo/kvW
    2zTqovU1aYxJSrjL5wFjsSTNO2nfM9OIcS7cw0Cqz1LcAjawTtRRTtbCnHFNOma0jGEi3N2xaCnK
    y87XKrScCr3DSD+S9sTebcf6XUq6jPtTTpGYtQ5cXf5v0lDaisMJXgFrDzDmot7pDn4zqliAtW1j
    huISnIy5M15F63rlnccHgHnEXaheoriS85yOnKemXogmxGkZiePCjEnZ9CgcWsFJt/K+vVMI+AvT
    ssaQcYYndYircNs3bFSWiVYudnIAAAAASUVORK5CYII=
    '''
    img_data = base64.b64decode(image)
    image = io.BytesIO(img_data)
    img = Image.open(image)

    # 创建一个新图像
    # 获取一个Image对象,参数分别是RGB模式。宽,高,三色
    image = Image.new('RGB', (90, 35), (255, 255, 255))
    # 获取一个画笔对象,将图片对象传过去
    draw = ImageDraw.Draw(image)
    # 获取一个font字体对象参数是ttf的字体文件的目录,以及字体的大小
    font = ImageFont.truetype("csongl.ttf", size=12)
    # 在图片上写东西,参数是:定位,字符串,颜色,字体
    draw.text((5, 10), '请输入黄色文字', (0, 0, 0), font=font)
     

    推荐更多pillow博客地址:https://www.cnblogs.com/chimeiwangliang/p/7130434.html

  • 相关阅读:
    高精度加法_蓝桥杯
    高精度阶乘计算_蓝桥杯
    闰年判断_蓝桥杯
    01字串_蓝桥杯
    字母图形_蓝桥杯
    禅道本地环境搭建(新猿旺学习总结)
    kvm管理
    kvm批量创建虚拟机
    7.正则RE
    ansible-playbook
  • 原文地址:https://www.cnblogs.com/angelyan/p/12738584.html
Copyright © 2011-2022 走看看