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多进程编程下线程之间变量的共享问题
May 05 Python
numpy给array增加维度np.newaxis的实例
Nov 01 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
python-视频分帧&多帧合成视频实例
Dec 10 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
Feb 06 Python
python实现的分层随机抽样案例
Feb 25 Python
python Django 反向访问器的外键冲突解决
May 20 Python
Pycharm修改python路径过程图解
May 22 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
基于python实现MQTT发布订阅过程原理解析
Jul 27 Python
基于python实现图片转字符画代码实例
Sep 04 Python
python 中yaml文件用法大全
Jul 04 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
让PHP以ROOT权限执行系统命令的方法
2011/02/10 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
Python Process多进程实现过程
2019/10/22 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
波兰家居和花园家具专家:4Home
2019/05/26 全球购物
仓库理货员岗位职责
2013/12/18 职场文书
早会主持词
2014/03/17 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
2015公司年度工作总结
2015/05/14 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js