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中的对象拷贝示例 python引用传递
Jan 23 Python
Python下载懒人图库JavaScript特效
May 28 Python
Python操作MySQL数据库的三种方法总结
Jan 30 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
python print出共轭复数的方法详解
Jun 25 Python
python 模拟贷款卡号生成规则过程解析
Aug 30 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
Dec 25 Python
PyTorch使用cpu加载模型运算方式
Jan 13 Python
Python 如何批量更新已安装的库
May 26 Python
使用AJAX和Django获取数据的方法实例
Oct 25 Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 24 Python
Python-OpenCV教程之图像的位运算详解
Jun 21 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留言本实例代码
2010/05/09 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
js option删除代码集合
2008/11/12 Javascript
JavaScript 常用函数
2009/12/30 Javascript
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
2014/08/30 Javascript
jQuery大于号(>)选择器的作用解释
2015/01/13 Javascript
js关于命名空间的函数实例
2015/02/05 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
利用React-router+Webpack快速构建react程序
2016/10/27 Javascript
js模拟微博发布消息
2017/02/23 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
Myprotein亚太地区:欧洲第一在线运动营养品牌
2020/12/20 全球购物
工程总经理工作职责
2013/12/09 职场文书
班长自荐书范文
2014/02/11 职场文书
幼儿园大班毕业评语
2014/12/31 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA