zoukankan      html  css  js  c++  java
  • Python图像处理库Pillow常用使用方法

    PIL(Python Imaging Library)是Python一个强大方便的图像处理库,只支持到Python2.7。
    Pillow是PIL的一个派生分支,在Python3中用Pillow代替PIL。
    Pillow官网:https://pillow.readthedocs.io/en/latest/handbook/index.html

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

    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 
    你好,世界'), 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')
  • 相关阅读:
    sparql学习sparql示例、dbpedia在线验证
    中国绿卡
    逾期率的水有多深,你知道吗?
    ICO和区块链区别
    What are the benefits to using anonymous functions instead of named functions for callbacks and parameters in JavaScript event code?
    Link static data in sql source control
    sql data compare
    viewbag
    多态的实际使用
    win10 sedlauncher.exe占用cpu处理
  • 原文地址:https://www.cnblogs.com/gdjlc/p/11444132.html
Copyright © 2011-2022 走看看