• Python使用pillow库往图片上写入文字或覆盖另一张图片


    Python使用pillow库往图片上写入文字或覆盖另一张图片

    python之pillow是 Python 的第三方图像处理库。pillow是PIL( Python Imaging Library)基础上发展起来的,发展至今,pillow已经成为了比 PIL 更具活力的图像处理库。Pillow 的初衷只是想作为 PIL 库的分支和补充,如今它已是“青出于蓝而胜于蓝”。

    pillow中文文档 Pillow — Pillow (PIL Fork) 8.4.0 文档

    pillow库的安装和使用

    pip install pillow

    【Python第三方模块(库、包)安装、卸载与查看及常见问题解决,可参见https://blog.csdn.net/cnds123/article/details/104393385】

    需要注意的是pillow库安装成功后,导包时要用PIL来导入,而不是用pillow【这里使用 PIL 导入,但实际上使用的是 Pillow 库,这里的 PIL 可以看做是 Pillow 库的简称】。如:

    import PIL

    from PIL import Image

    打开图片保存图片的基本操作:

    # 打开图片

    img = Image.open("d:\\image\\tp.jpg")

    # 显示图片(执行显示图片后线程会中断,关闭图像后恢复)

    img.show()

    # 保存图片

    img.save(""d:\\image\\tp2.jpg")

    Python实现图片添加文字(水印)

    PIL.ImageFont.truetype()函数从给定文件中加载字体对象,并为给定大小的字体创建一个字体对象。

    下面给出示例代码(所用图片见附录):

    1. from PIL import ImageFont
    2. from PIL import Image
    3. from PIL import ImageDraw
    4. imageFile = "图.jpg"
    5. img=Image.open(imageFile)
    6. draw = ImageDraw.Draw(img)
    7. ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMYOU.TTF", 20)
    8. draw.text((30,30), u"测试文字",font = ft, fill = 'red')
    9. ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMYOU.TTF", 40)
    10. draw.text((30,80), u"测试文字",font = ft, fill = 'green')
    11. ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMYOU.TTF", 60)
    12. draw.text((30,150), u"测试文字",font = ft, fill = 'blue')
    13. ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMLI.TTF", 40)
    14. draw.text((30,220), u"测试文字",font = ft, fill = 'red')
    15. ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\STXINGKA.TTF", 40)
    16. draw.text((30,300), u"测试文字",font = ft, fill = 'purple')
    17. img.show() #显示
    18. img.save("图2.png") # 保存

    运行效果:

     Python往图片覆盖另一张图片

    paste函数的作用为将一张图片覆盖到另一张图片的指定位置去,第一个参数指定要进行复制的图像,第二个参数为二元或四元数组,用于指定粘贴位置的左上角坐标(和右下角坐标)。第三个作为可选参数mask可选范围0-255,0表示透明粘贴,mask值越大粘贴透明度越低,255为不透明粘贴。

    下面给出示例代码(所用图片见附录):

    1. from PIL import Image
    2. from PIL import ImageDraw
    3. img2 = Image.open("小图.jpg")
    4. img1 = Image.open("图.jpg")
    5. img1.paste(img2, (200, 100)) # 纵向拼接
    6. img1.show() #显示
    7. img1.save("图.jpg") # 保存

    运行效果:

    其它

    图片旋转

    示例源码如下:

    1. from PIL import Image
    2. img = Image.open("汽车.jpg") #打开图片
    3. img2 = img.rotate(45,expand=True) #旋转,参数expand=True保证旋转后的图像完整显示
    4. img2.show() #显示

    运行效果:

     

    滤镜功能

    示例源码如下:

    1. from PIL import Image
    2. from PIL import ImageFilter
    3. img = Image.open("汽车.jpg")
    4. img = img.filter(ImageFilter.CONTOUR)
    5. img.show()

    运行效果:

     

    图片缩放

    示例源码如下:

    1. from PIL import Image
    2. img = Image.open('汽车.jpg')
    3. w, h = img.size # 获得图像尺寸
    4. img.thumbnail((w//2, h//2)) #缩放到50%:
    5. img.show() #显示

    运行效果:

     

    附录

    素材图片如下:

     OK

  • 相关阅读:
    xray证书安装及使用
    【SQL server速成之路】——身份验证及建立和管理用户账户
    【C语言初阶】分支语句和循环语句
    Java程序员毕业N年系列----毕业二年
    JavaScript 72 JavaScript vs jQuery 72.4 JavaScript jQuery HTML DOM
    Layui合计自定义列
    dify-on-wechat中涉及企业微信几个函数解析
    leetcode:914. 卡牌分组(python3解法)
    DeepWalk
    服务端不回应客户端的syn握手,连接建立失败原因排查
  • 原文地址:https://blog.csdn.net/cnds123/article/details/126141838