Python如何为图片添加水印


Posted in Python onNovember 25, 2016

添加水印的主要目的是为了版权保护,使自己的图像不被抄袭或者恶意转载。网上有很多制作水印的工具,本帖介绍怎么使用Python-Pillow库给图片添加水印。

使用ImageMagick添加图片水印-Linux 添加文本水印

在图片右下角添加文字:

from PILimport Image, ImageDraw, ImageFont
 
# 指定要使用的字体和大小;/Library/Fonts/是macOS字体目录;Linux的字体目录是/usr/share/fonts/
font = ImageFont.truetype('/Library/Fonts/Arial.ttf', 24)
 
# image: 图片  text:要添加的文本 font:字体
def add_text_to_image(image, text, font=font):
  rgba_image = image.convert('RGBA')
  text_overlay = Image.new('RGBA', rgba_image.size, (255, 255, 255, 0))
  image_draw = ImageDraw.Draw(text_overlay)
 
  text_size_x, text_size_y = image_draw.textsize(text, font=font)
  # 设置文本文字位置
  print(rgba_image)
  text_xy = (rgba_image.size[0] - text_size_x, rgba_image.size[1] - text_size_y)
  # 设置文本颜色和透明度
  image_draw.text(text_xy, text, font=font, fill=(76, 234, 124, 180))
 
  image_with_text = Image.alpha_composite(rgba_image, text_overlay)
 
  return image_with_text
 
im_before = Image.open("lena.jpg")
im_before.show()
im_after = add_text_to_image(im_before, 'WTF')
im_after.show()
# im.save('im_after.jpg')

Python如何为图片添加水印

添加图片水印

fromPILimportImage, ImageDraw
 
defadd_watermark_to_image(image, watermark):
  rgba_image = image.convert('RGBA')
  rgba_watermark = watermark.convert('RGBA')
 
  image_x, image_y = rgba_image.size
  watermark_x, watermark_y = rgba_watermark.size
 
  # 缩放图片
  scale = 10
  watermark_scale = max(image_x / (scale * watermark_x), image_y / (scale * watermark_y))
  new_size = (int(watermark_x * watermark_scale), int(watermark_y * watermark_scale))
  rgba_watermark = rgba_watermark.resize(new_size, resample=Image.ANTIALIAS)
  # 透明度
  rgba_watermark_mask = rgba_watermark.convert("L").point(lambda x: min(x, 180))
  rgba_watermark.putalpha(rgba_watermark_mask)
 
  watermark_x, watermark_y = rgba_watermark.size
  # 水印位置
  rgba_image.paste(rgba_watermark, (image_x - watermark_x, image_y - watermark_y), rgba_watermark_mask)
 
  return rgba_image
 
im_before = Image.open("lena.jpg")
im_before.show()
 
im_watermark = Image.open("watermark.jpg")
im_after = add_watermark_to_image(im_before, im_watermark)
im_after.show()
# im.save('im_after.jpg')

Python如何为图片添加水印

Python 相关文章推荐
一个计算身份证号码校验位的Python小程序
Aug 15 Python
Python编程中装饰器的使用示例解析
Jun 20 Python
使用apidocJs快速生成在线文档的实例讲解
Feb 07 Python
Python实现的简单排列组合算法示例
Jul 04 Python
Python实现的简单计算器功能详解
Aug 25 Python
利用python脚本如何简化jar操作命令
Feb 24 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
Python 寻找局部最高点的实现
Dec 05 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
如何在Python中创建二叉树
Mar 30 Python
python实现高效的遗传算法
Apr 07 Python
Python pass详细介绍及实例代码
Nov 24 #Python
Python脚本实时处理log文件的方法
Nov 21 #Python
深入理解 Python 中的多线程 新手必看
Nov 20 #Python
详解python的数字类型变量与其方法
Nov 20 #Python
python中异常报错处理方法汇总
Nov 20 #Python
详解MySQL数据类型int(M)中M的含义
Nov 20 #Python
python制作websocket服务器实例分享
Nov 20 #Python
You might like
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
Smarty保留变量用法分析
2016/05/23 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
jQuery实现长文字部分显示代码
2013/05/13 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
2013/05/19 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
2013/12/30 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
js读取本地文件的实例
2017/12/22 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
layer弹出子iframe层父子页面传值的实现方法
2018/11/22 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
深入理解NumPy简明教程---数组2
2016/12/17 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
python迭代器常见用法实例分析
2019/11/22 Python
python dumps和loads区别详解
2020/02/04 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
python上selenium的弹框操作实现
2020/07/13 Python
python批量修改交换机密码的示例
2020/09/22 Python
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
英国最受欢迎的在线隐形眼镜商店:VisionDirect.co.uk
2018/12/06 全球购物
linux下进程间通信的方式
2014/12/23 面试题
应届大专生求职信
2014/06/26 职场文书
医院合作意向书范本
2015/05/08 职场文书
卢旺达饭店观后感
2015/06/05 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers
MySQL学习总结-基础架构概述
2021/04/05 MySQL
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python