欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python 中使用 Pillow 处理图片增加水印

程序员文章站 2022-03-25 18:06:56
这个是个比较常见的需求,比如你在某个网站上发布了图片,在图片上就会出现带你昵称的水印。那么在Python中应该如何处理这一类需求呢? 其实在我的《Django实战开发》视频教程中有讲到这一部分,Django结合了xadmin,再集成进来 django-ckeditor之后,有了比较方便的富文本编辑器 ......

这个是个比较常见的需求,比如你在某个网站上发布了图片,在图片上就会出现带你昵称的水印。那么在python中应该如何处理这一类需求呢?

其实在我的《django实战开发》视频教程中有讲到这一部分,django结合了xadmin,再集成进来 django-ckeditor之后,有了比较方便的富文本编辑器了,对于图片也就需要增加一个水印的功能。这里把其中的代码抽一部分出来,仅供参考。

需要先安装pillow: pip install pillow

demo代码:

import sys

from pil import image, imagedraw, imagefont


def watermark_with_text(file_obj, text, color, fontfamily=none):
    image = image.open(file_obj).convert('rgba')
    draw = imagedraw.draw(image)
    width, height = image.size
    margin = 10
    if fontfamily:
        font = imagefont.truetype(fontfamily, int(height / 20))
    else:
        font = none
    textwidth, textheight = draw.textsize(text, font)
    x = (width - textwidth - margin) / 2  # 计算横轴位置
    y = height - textheight - margin  # 计算纵轴位置
    draw.text((x, y), text, color, font)

    return image


if __name__ == '__main__':
    org_file = sys.argv[1]
    with open(org_file, 'rb') as f:
        image_with_watermark = watermark_with_text(f, 'the5fire.com', 'red')

    with open('new_image_water.png', 'wb') as f:
        image_with_watermark.save(f)