专栏首页Python程序员杂谈Python 中使用 Pillow 处理图片增加水印

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

这个是个比较常见的需求,比如你在某个网站上发布了图片,在图片上就会出现带你昵称的水印。那么在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)

使用方法: python watermart.py <图片地址>

这个只是把文本嵌入到图片中的实现,其实也可以嵌入一个图片进去的。具体可以参考:

https://pillow.readthedocs.io/en/3.1.x/reference/Image.html#PIL.Image.alpha_composite

相关文章:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python项目练习七:自定义公告板

    这依然是一个cgi的项目,有了前面的一个项目作为基础,这个里面没有什么难点。不过,和书上不同的是,我这里使用的数据库是mysql,所以有兴趣的童鞋,可以参考一下...

    the5fire
  • HttpSessionListener:统计在线人数

    同 上文 一样,这个接口也是用于监听服务器端变化的,不过它监听的是HttpSession的变化。那么这个HttpSession是干嘛的呢?大家可以参看这里: 深...

    the5fire
  • JSTL使用自定义函数

    这里简单说一下JSTL中自定义函数的使用。 首先建立一个类:MyFunctions:

    the5fire
  • 选择设置好ext3日志模式

    Linux是一种开放的、因Internet而产生的操作系统。Internet的发展、以网络为中心的计算模式如电子商务被迅速接受和普及,都为 Linux提供了更巨...

    一见
  • Mac下配置JAVA_HOME

    动动我试试
  • Python编码规范

    所有的 Python 脚本文件都应在文件头标上 #-*- coding:utf8 -*- 。设置编辑器,默认保存为 utf8 格式。

    py3study
  • iPic - MAC图床神器上传方式图床iPic 菜单iPic Mover

    原文 ? 有了图床神器 iPic,不论屏幕截图、还是复制图片,都可以自动上传、保存 Markdown 格式的链接,直接粘贴插入,够懒人吧? 使用 Hexo | ...

    若与
  • 内网穿透工具-ittun

    相信大家在工作和学习都避免不了快速外网调试。比如微信支付、支付宝支付,消息推送,短信发送,邮件发送等等。都需外网能访问你本地服务器进行调试。 软件下载地址:h...

    猿天地
  • java每日一题20201025

    大家好,我是向同学,从今天继续每日一题,旨在为提高大家的基础知识。话说干了这么多年的开发,只知道会用,怎么用,用什么,隐约也知道了为什么用,但为啥JAVA总像一...

    用户7656790
  • iOS - FTPManager的简单使用及常见问题

    LinXunFeng

扫码关注云+社区

领取腾讯云代金券