Python批量添加图片水印的实现
作者:ZackSock 发布时间:2021-11-04 17:53:12
标签:Python,图片水印
一、前言
现在盗图是非常常见的事情,许多人在使用图片时都不会标注图片的出处或者提及作者,这个时候水印就是个很好的东西了。我们可以给图片添加水印后再分享出去,这样就可以让其它人知道图片作者相关的信息。今天我们就带大家来实现水印的添加。
二、文字水印
在添加水印的时候,我们比较常用的就是文字水印。比如@ZackSock
、@juejin:ZackSock
等。这种水印的添加非常简单,只需要使用到Pillow
模块的添加文字的操作即可,代码如下:
from PIL import Image, ImageFont, ImageDraw
# 加载字体
font = ImageFont.truetype('msyh.ttc', 60)
# 加载图片
im = Image.open('im.jpg')
# 创建画笔
drawer = ImageDraw.Draw(im)
# 准备文本
text = '@ZackSock'
# 绘制文本
drawer.text((0, 0), text, (0, 255, 0), font)
im.show()
这里需要注意几个地方,第一个就是水印大小。水印大小也就是文字大小,这个是由:
font = ImageFont.truetype('msyh.ttc', 60)
中第二个参数决定的,因此我们可以通过调节该参数调整水印大小。
第二点就是水印位置和水印颜色,这个就是通过:
drawer.text((0, 0), text, (0, 255, 0), font)
中第一个和第三个参数决定的,其中(0,0)表示水印左上角的坐标,而(0,255,0)表示水印的RGB值,具体调节可以参考RGB配色表。
三、图片水印
文字水印使用起来比较方便,但是有时候我们更习惯将有代表性的logo作为水印,这个时候就可以图片水印了,代码如下:
from PIL import Image
im = Image.open('origin.png').convert('RGBA')
watermark = Image.open('watermark.png').convert('RGBA')
w, h = im.size
watermark.thumbnail((w//6, h//6))
r, g, b, a = watermark.split()
# 获取水印尺寸
w2, h2 = watermark.size
# 计算位置
x = w-w2
y = h-h2
# 粘贴
im.paste(watermark, (x, y), mask=a)
im.show()
效果图如下:
来源:https://blog.csdn.net/ZackSock/article/details/120573749


猜你喜欢
- 层及索引levels,刚开始学习pandas的时候没有太多的操作关于groupby,仅仅是简单的count、sum、size等等,没有更深入
- CSS代码更清晰高效的一些经验是许多网页制作者与开发者都关心的问题。但是大概没有什么魔法,可以保证一下就把你的样式表缩小到百分之多少,合理的
- 一、安装MySQL本文是通过APT方式安装,安装的最新版本是5.7.21(注意:通过APT方式安装的版本都是现在最新的版本,通过这种方式安装
- 目录1、切片的基础用法2、切片的高级用法3、自定义对象实现切片功能3.1、魔术方法:`getitem()`3.2、自定义序列实现切片功能3.
- Tkinter是python的GUI模块,内含各种窗口控件,利用其中messagbox可以制作各种信息弹出窗口。以下是制作信息提示框的代码:
- 用SQL server 处理数据库,主要就是和数据库还有处理数据库的事务打交道,如何管理好数据库这个对象和处理数据库的事务过程,是我们运用好
- 数据准备moduls.py# 构建表结构from django.db import models# 表app01_publishclass
- 模态框Bootstrap ModalBootstrap 的模态框使用Bootstrap 的前端应该都接触过。本文记录一下今天使用时遇到的 B
- PHP htmlentities() 函数实例把一些字符转换为 HTML 实体:<?php $str = "<&
- 有关函数HashBytes请参考:http://msdn.microsoft.com/en-us/library/ms174415.aspx
- 本文实例讲述了Java使用JDBC连接数据库的实现方法,是Java数据库程序设计里非常实用的重要技巧。分享给大家供大家参考。具体如下:JDB
- 发现报错对于Navicat连接数据库mysql 出现报错2003(10060),如下所示报错经过查询总结以上出现问题的主要解决方法三种:1、
- 1 什么是嵌套循环所谓嵌套循环就是一个外循环的主体部分是一个内循环。内循环或外循环可以是任何类型,例如 while 循环或 for 循环。
- 【数据库模型类】class ConColumn(db.Model): __tablename__='con
- 我就废话不多说了,直接上代码吧!import datetimedef find_close(arr, e): start_time = da
- Python 3 利用 Dlib 19.7 实现摄像头人脸检测特征点标定0.引言利用python开发,借助Dlib库捕获摄像头中的人脸,进行
- banner 设计会严重影响广告投放效果,在此建议相关设计人员,在设计FLASH BANNER的时候考虑到以下问题.1.
- 一、开发环境集成开发工具:jupyter notebook 6.5.2集成开发环境:Python 3.10.6第三方库:tensorflow
- 目录01 all or any02 dir03 列表(list)推导式04 pprint05 repr06 sh07 Type hints0
- 无限循环如果条件判断语句永远为 true,循环将会无限的执行下去,如下实例:#!/usr/bin/python# -*- coding: U