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中fileno()方法的使用
May 24 Python
python文件的md5加密方法
Apr 06 Python
详解python的几种标准输出重定向方式
Aug 15 Python
python 与GO中操作slice,list的方式实例代码
Mar 20 Python
使用pandas实现csv/excel sheet互相转换的方法
Dec 10 Python
Python hexstring-list-str之间的转换方法
Jun 12 Python
Python实现的ftp服务器功能详解【附源码下载】
Jun 26 Python
python Gunicorn服务器使用方法详解
Jul 22 Python
详细介绍Python进度条tqdm的使用
Jul 31 Python
Python安装及Pycharm安装使用教程图解
Sep 20 Python
python各种excel写入方式的速度对比
Nov 10 Python
分享python函数常见关键字
Apr 26 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
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
详解PHP中的8个魔术常量
2020/07/06 PHP
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
纯js实现手风琴效果
2020/04/17 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
详解Python中的变量及其命名和打印
2016/03/11 Python
python中列表和元组的区别
2017/12/18 Python
Python代码实现KNN算法
2017/12/20 Python
简单了解python模块概念
2018/01/11 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
python批量处理txt文件的实例代码
2020/01/13 Python
python字符串常用方法及文件简单读写的操作方法
2020/03/04 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
python2.7使用scapy发送syn实例
2020/05/05 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
美国内衣品牌:Leonisa
2016/08/14 全球购物
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
安踏广告词改编版
2014/03/21 职场文书
党员公开承诺事项
2014/03/25 职场文书
机械专业求职信范文
2014/07/15 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
小学生交通安全寄语
2015/02/27 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
python源码剖析之PyObject详解
2021/05/18 Python
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python