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的Flask框架表单插件Flask-WTF实现Web登录验证
Jul 12 Python
Python首次安装后运行报错(0xc000007b)的解决方法
Oct 18 Python
python 如何快速找出两个电子表中数据的差异
May 26 Python
python实现关键词提取的示例讲解
Apr 28 Python
通过Python模块filecmp 对文件比较的实现方法
Jun 29 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
python实现维吉尼亚加密法
Mar 20 Python
python异常触发及自定义异常类解析
Aug 06 Python
Python3实现个位数字和十位数字对调, 其乘积不变
May 03 Python
Python 程序员必须掌握的日志记录
Aug 17 Python
用Python 执行cmd命令
Dec 18 Python
Python中seaborn库之countplot的数据可视化使用
Jun 11 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
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
php生成圆角图片的方法
2015/04/07 PHP
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
JavaScript如何自定义trim方法
2015/07/28 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
vue中appear的用法
2017/08/17 Javascript
vue源码学习之Object.defineProperty对象属性监听
2018/05/30 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
2018/05/31 jQuery
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
Python解析nginx日志文件
2015/05/11 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
使用django-crontab实现定时任务的示例
2018/02/26 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
python列表使用实现名字管理系统
2019/01/30 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
django中ImageField的使用详解
2020/12/21 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
运动会广播稿30字
2014/01/21 职场文书
初三班主任寄语大全
2014/04/04 职场文书
社区戒毒工作方案
2014/06/04 职场文书
毕业生个人总结
2015/02/28 职场文书
大学校园招聘会感想
2015/08/10 职场文书
外出考察学习心得体会
2016/01/18 职场文书