使用Python中PIL库给图片添加文本水印
作者:空空star 发布时间:2021-09-07 19:09:52
标签:pil库,图片,文字水印
前言
大家好,本篇给大家分享一下通过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')
来源:https://blog.csdn.net/weixin_38093452/article/details/130204442


猜你喜欢
- 假设要实现一个存放多种类型数据结构的对象,比如一个存放算术操作数和操作符的树结点,需要存放包含一元操作符、二元操作符和数字类型的结点clas
- 本文实例讲述了Python Web框架之Django框架cookie和session用法。分享给大家供大家参考,具体如下:part 1 概念
- 本文先了解一个简单阈值函数,以了解一个阈值算法的具体参数。 然后比较不同阈值函数的区别。同样的,先用一副图说明本文重要大纲: #! usr/
- 今天遇到一个奇怪的现象,使用tensorflow-gpu的时候,出现内存超额~~如果我训练什么大型数据也就算了,关键我就写了一个y=W*x…
- python实现取余操作的方法:可以利用求模运算符(%)来实现。求模运算符可以将两个数相除得到其余数。我们还可以使用divmod()函数来实
- tkinter 绘制GUI简单明了,制作一些简单的GUI足够,目前遇到的一个问题是不能同时排列显示多幅图片(目前没找到同时显示解决方法),退
- 问题一般在服务器上进行环境安装的时候有多种方式,比如docker, conda等。conda肯使用起来更加简便,docker更适合服务器部署
- tensorflow在1.4版本引入了keras,封装成库。现想将keras版本的GRU代码移植到TensorFlow中,看到TensorF
- 对于网站开发者来说,对展示内容增加一个滑动或者是轮播效果的是非常常见的需求。收费和免费的轮播插件多的是不胜枚举。其中很 多提供很多有用的配置
- 定义通用视图修改 book/models.py 代码中的 AuthorInfo 类,如果一致则不必修改class AuthorInfo(mo
- 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server se
- 连接数据库:mysql -u用户名 -p密码导入数据 source d:\create.sql用下面的语句就可以导出mysql中的数据了:m
- 1:为什么我得不到变量 我在一网页向另一网页POST数据name,为什么输出$name时却得不到任何值? 在PHP4.2以后的版本中regi
- 键盘事件废话不多说直接上包from selenium.webdriver.common.keys import Keys1、删除键 BACK
- 1、golang中获取请求接口中数据(GET)方式一: API参数 ctx.Param(name string)或者ctx.Params.B
- 如下所示:Numpy中reshape的使用方法为:numpy.reshape(a, newshape, order='C')
- Ajax的出现让Web展现了更新的活力,基本所有的语言,都动态支持Ajax与起服务端进行通信,并在页面实现无刷新动态交互。 下面是散仙使用D
- 上次谈到客户端和服务端的编码“陷阱”,其中对url编码只是提及带过,并没有做深入讨论,事实上由于浏览器环境的复杂和不一致性,我们也很容易掉进
- 从windows操作系统本地读取csv文件报错data = pd.read_csv(path)Traceback (most recent
- 前言一般js破解有两种方法,一种是用Python重写js逻辑,一种是利用第三方库来调用js内容获取结果。这两种方法各有利弊,第一种方法性能好