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聚类算法之DBSACN实例分析
Nov 20 Python
python实现批量修改图片格式和尺寸
Jun 07 Python
Python3使用turtle绘制超立方体图形示例
Jun 19 Python
Flask框架通过Flask_login实现用户登录功能示例
Jul 17 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
Pytorch 之修改Tensor部分值方式
Dec 27 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 Python
Python如何使用正则表达式爬取京东商品信息
Jun 01 Python
基于python tkinter的点名小程序功能的实例代码
Aug 22 Python
Python pathlib模块使用方法及实例解析
Oct 05 Python
python中pdb模块实例用法
Jan 15 Python
python playwrigh框架入门安装使用
Jul 23 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
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
php生成二维码
2015/08/10 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
jQuery 表单验证扩展(四)
2010/10/20 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
Bootstrap基本样式学习笔记之按钮(4)
2016/12/07 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
NodeJS链接MySql数据库的操作方法
2017/06/27 NodeJs
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
vuex提交state&&实时监听state数据的改变方法
2018/09/16 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
Python之eval()函数危险性浅析
2014/07/03 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
详解如何使用Python编写vim插件
2017/11/28 Python
wxPython的安装图文教程(Windows)
2017/12/28 Python
Python3最长回文子串算法示例
2019/03/04 Python
python与字符编码问题
2019/05/24 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
Overload和Override的区别
2012/09/02 面试题
销售部主管岗位职责
2013/12/18 职场文书
婚礼主持词
2014/03/13 职场文书
环境卫生标语
2015/08/03 职场文书
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python