通过Python的PIL库给图片添加文本水印

news2024/10/6 2:24:58

文章目录

  • 前言
  • 一、PIL是什么?
  • 二、安装PIL
  • 三、查看PIL版本
  • 四、使用PIL库给图片添加文本水印
    • 1.引入库
    • 2.打开图片文件
    • 3.新建一个Draw对象
    • 4.设置水印文字、字体、大小
    • 5.设置水印颜色
      • 5.1通过名称设置颜色
      • 5.2通过RGB值设置颜色
      • 5.3通过RGBA值设置颜色
      • 5.4通过十六进制设置颜色
    • 6.获取水印文字的尺寸
    • 7.设置水印位置
      • 7.1左上
      • 7.2右下
    • 8.添加水印
    • 9.保存图片
  • 总结


前言

大家好,我是空空star,本篇给大家分享一下通过Python的PIL库给图片添加文本水印。


一、PIL是什么?

PIL是Python Imaging Library的缩写,它是Python语言中常用的图像处理库之一。它提供了丰富的图像处理功能,包括打开、保存、裁剪、旋转、缩放等操作,并支持多种图像格式。

二、安装PIL

pip install pillow

三、查看PIL版本

pip show pillow

Name: Pillow
Version: 9.4.0
Summary: Python Imaging Library (Fork)
Home-page: https://python-pillow.org
Author: Alex Clark (PIL Fork Author)
Author-email: aclark@python-pillow.org
License: HPND
Requires:
Required-by: image, imageio, matplotlib, pytesseract, wordcloud

四、使用PIL库给图片添加文本水印

1.引入库

from PIL import Image, ImageDraw, ImageFont

2.打开图片文件

local = '/Users/kkstar/Downloads/video/pic/'
image = Image.open(local+"demo.jpg")

3.新建一个Draw对象

draw = ImageDraw.Draw(image)

4.设置水印文字、字体、大小

text = '@空空star'
font = ImageFont.truetype('STHeitiMedium.ttc', size=80)

5.设置水印颜色

5.1通过名称设置颜色

# 通过名称设置颜色-黄色
color = 'yellow'

5.2通过RGB值设置颜色

# 通过RGB值设置颜色-红色
color = (255, 0, 0)

5.3通过RGBA值设置颜色

# 通过RGBA值设置颜色-白色
color = (255,255,255,0)

5.4通过十六进制设置颜色

# 通过十六进制设置颜色-绿色
color = '#6FE000'

6.获取水印文字的尺寸

text_width, text_height = draw.textsize(text, font)

7.设置水印位置

7.1左上

x = 30
y = 30

7.2右下

x = image.width-text_width-30
y = image.height-text_height-30

其他位置调整x、y的值即可。这个30是我这样设置的,你也可以根据自己的喜好来调整。

8.添加水印

draw.text((x, y), text, font=font, fill=color)

9.保存图片

image.save(local+'image_with_watermark.jpg')

总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/442392.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Word控件Spire.Doc 【脚注】字体(3):将Doc转换为PDF时如何使用卸载的字体

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

HttpServletRequest的介绍和方法以及代码实战

目录 HttpServletRequest HttpServletRequest 介绍 HttpServletRequest 常用方法 代码实战 HTML部分 Java部分 web.xml配置 请求转发 为什么需要请求转发 请求转发说明 请求转发原理示意图 代码实战 HTML部分 CheckServlet部分 ManageServlet 部分 xml部分 请求…

【Linux】进程的概念

文章目录 📖 前言1. 冯诺依曼体系结构1.1 内存存在的意义:1.2 程序加载到内存的意义:1.3 程序的预加载: 2. 认识进程2.1 如何理解管理:2.2 什么叫是进程:(初步理解) 3. 简单认识操作…

读SQL进阶教程笔记13_SQL中的分组和层级

1. 数据分组 1.1. SQL的语句中具有分组功能的是GROUP BY和PARTITION BY 1.1.1. 两者都有数学的理论基础 1.1.2. 都可以根据指定的列为表分组 1.1.3. 区别仅仅在于,GROUP BY在分组之后会把每个分组聚合成一行数据 1.1.4. GROUP BY的作用是将一个个元素划分成若干…

CentOS7误删自带python2或yum异常导致yum命令不可用的解决方法

yum命令不可用的解决方法 异常场景1原因验证解决方案让Python2与Python3共存 异常场景2原因解决方案卸载、删除残留文件下载系统版本对应的yum包 异常场景1 在执行yum命令时,系统无法找到 Python 解释器,因此无法运行 yum 命令,具体异常如下…

详解语义分割deeplabv3+模型的工业应用流程

来源:投稿 作者:某一个名字 编辑:学姐 导语 在工业视觉应用中,目标检测算法常用于特征的粗定位,而语义分割则在特征的精定位方面有着突出的表现。使用较多的语义分割模型主要有FCN、deeplab系列、unet等,根…

ASEMI代理ADI亚德诺AD8210YRZ-REEL7车规级芯片

编辑-Z AD8210YRZ-REEL7芯片参数: 型号:AD8210YRZ-REEL7 偏移电压(RTI):1.0mV 超温(RTI):1.8 mV 差分输入阻抗:2 kΩ 共模输入阻抗:5 MΩ 共模输入电压…

数据离奇丢失案件的侦破与思考

01 离奇的数据丢失案件 最近生产环境出了一起数据离奇丢失的案件,调查过程很曲折,几度进入死胡同。下面跟大家分享整个事件的来龙去脉。 1.1 数据丢失案件 8月初,用户批量导入了一批(300)委托人数据,导入…

完美解决丨SyntaxError: invalid syntax

样例 1.1. 不同编辑器 VSCode:点击查看PyCharm:点击查看 1.2. 不同版本 1.2.1. python2 与 python3 的差异 Python2 的 print 语句如下: python print Hello, World! Python3 的 print 语句如下: python print(Hello, World!) P…

超实用的 Linux 高级命令,程序员一定要懂

前言 在运维的坑里摸爬滚打好几年了,我还记得我刚开始的时候,我只会使用一些简单的命令,写脚本的时候,也是要多简单有多简单,所以有时候写出来的脚本又长又臭。 像一些高级点的命令,比如说 Xargs 命令、管…

前端登陆表单_内容非空验证_rules属性与validate方法

更多校验规则查看&#xff1a;ElementUI官网-form-attributes 表单内容 <!--3、通过rules属性传入约定的验证规则v-bind:model"dataForm"绑定data中的dataForm数据v-bind:rules"rules"绑定data中的rules属性&#xff0c;里面定义了要校验的属性及规则re…

网络安全之DVWA通关教程

网络安全之DVWA通关教程 一、DVWA简介二、DVWA安装2.1 安装PHPStudy2.2 安装DVWA 三、DVWA使用3.1 Brute Force&#xff08;暴力破解&#xff09;3.1.1 Low级别3.1.2 Medium级别3.1.3 High级别 3.2 Command Injection&#xff08;命令注入&#xff09;3.2.1 Low级别3.2.2 Middl…

三极管基本知识

1、三极管是常用的半导体器件&#xff0c;也称为双极型品体管、品体三极管&#xff0c;由P/N结组成&#xff0c;它分为NPN(简称P三极管)和PNP&#xff08;简称N三极管&#xff09;&#xff0c;P三极管用多一点。常用的有插件类和贴片类两大封装。具体封装类型有SOT-23-3,TO-92,…

QS排名十年对比:美国大学最稳,中国大学进步最快

QS世界大学排名发布距今已有20年历史&#xff0c;迄今为止&#xff0c;全球已有超过90个国家和地区共1500多所大学进入QS世界排名。QS排名评估中所使用的5项评估标准基本保持不变。 QS使用5个关键指标来进行排名&#xff0c;包括学术声誉、雇主声誉、篇均论文引用、H指数和国际…

【Node.JS】初入前端,学习node.js基本操作

文章目录 一、Node.js 创建服务端应用二、npm 使用介绍三、Node.js 回调函数四、Node.js 事件驱动程序五、Node.js 事件监听器六、特殊的error事件七、Node.js Buffer&#xff08;缓冲区&#xff09;八、输入输出流 Stream九、Node.js 模块系统十、 Node.js 路由十一、GET/POST…

Node 内置模块 【http模块】

文章目录 &#x1f31f;前言&#x1f31f;http模块&#x1f31f; 1.引入http模块&#x1f31f; 2.创建服务&#x1f31f; 3.添加头信息&#x1f31f; 4.搭建一个简单的服务器&#xff1a;&#x1f31f; 5.Request对象&#x1f31f; 6.Response对象&#x1f31f; 7.练习&#xf…

Mac 安装Java反编译工具JD-GUI

一、下载JD-GUI软件 1.首先到Github下载JD-GUI软件&#xff1a; github java-decompiler/jd-gui Public 选择jd-gui-osx-1.6.6.tar. 2.解压打开软件&#xff0c;但是提示错误&#xff1a; 3.确保本机已安装JDK. 4.如果确定已经安装了JDK海报这个这个错误&#xff0c;选中JD…

Ubuntu由于没有公钥,无法验证下列签名: NO_PUBKEY 79CDFD222CD3495A

执行update时&#xff0c;打印几行错误信息&#xff1a; sudo apt-get update命中:3 https://deb.termius.com squeeze InRelease 错误:3 https://deb.termius.com squeeze InRelease 由于没有公钥&#xff0c;无法验证下列签名&#xff1a; NO_PUBKEY 79CDFD222CD3495A W: 校…

海量数据的交互式分析工具Dremel

海量数据的交互式分析工具Dremel 产生背景数据模型两方面的技术支撑面向记录和面向列的存储嵌套模型的形式化定义 嵌套式的列存储数据的无损表示重复深度的定义定义深度的定义 高效的数据编码&#xff08;了解&#xff09;数据重组 查询语言与执行&#xff08;了解&#xff09;…

易点易动设备管理系统帮助水泥厂实现智能设备巡检

着工业4.0的不断发展&#xff0c;智能制造成为企业追求的目标。水泥厂作为基础建设的重要产业&#xff0c;其生产过程中设备的巡检维护显得尤为重要。本文介绍了易点易动设备管理系统如何帮助水泥厂实现智能设备巡检&#xff0c;提高设备管理效率&#xff0c;降低维修成本&…