-
2022-05-13 15:50:55
对于某张图片,可能是你精心制作的思维导图,或者你精心设计的某个logo。你可能花费好多时间来弄,最后却被别人直接搬运过去使用,好气哦!
基于此,本文我就带着大家学学如何给你的
图片加水印
,仅需要2行Python代码,任何人都可以学会。filestools库介绍
今天给大家介绍的Python库,叫做filestools,由小小明开发,直接使用如下命令,安装后使用。
pip install filestools --index-url=http://mirrors.aliyun.com/pypi/simple -U
这个库一共集成了4个功能,4个库都已经全部迁移到了filestools库中,因此安装这一个库,就可以使用所有的4个功能了,你只需要在使用对应功能,分别导入对应的模块即可。
# 给图片加水印 from watermarker.marker import add_mark
add_mark()方法一共有8个参数,如果你不知道怎么查看参数,在jupyter notebook可以输入如下命令,即可查看。
下面分别为大家讲述add_mark()方法中8个参数的含义,介绍如下 :
-
file: 待添加水印的照片;
-
mark: 使用哪些字作为水印;
-
out: 添加水印后保存的位置;
-
color: 水印字体的颜色,默认颜色#8B8B1B;
-
size: 水印字体的大小,默认50;
-
opacity: 水印字体的透明度,默认0.15;
-
space: 水印字体之间的间隔, 默认75个空格;
-
angle: 水印字体的旋转角度,默认30度;接下来,我们仅用一行代码,给图片添加水印。
一行代码给图片加水印
原图长这样:
使用下面这行代码,仅仅两行代码:
from watermarker.marker import add_mark add_mark(file=r"aixin.jpg", out=r"C:\Users\Administrator\Desktop\练习", mark="人生苦短,快学Python", opacity=0.2, angle=45, space=30)
加水印后长这样:
最后再为大家解释一下,这一行代码的含义。
add_mark(file=r"aixin.jpg", out=r"C:\Users\Administrator\Desktop\练习", mark="人生苦短,快学Python", opacity=0.2, angle=45, space=30)
含义: 给当前工作环境下名为
aixin.jpg
的图片,添加一张水印。水印字样为快学Python
,水印透明度是0.2
,水印的旋转角度是45°
,水印之间的间隔是30
个空格。添加水印后,最后将处理后的图片保存在一个指定目录
下。更多相关内容 -
-
python实现给图片添加水印(包含动图)
2020-10-16 16:46:49python实现给图片添加文字水印,也包含给动图添加文字水印。实现了两种方法,分别使用了两种不同的库。详细注释。 -
python实现图片加水印
2020-12-02 16:37:30由于公司业务需求,使用python+PIL+opencv等模块实现对图片加水印以及图片缩放比例后加水印,并生成图片base64格式图片,代码里注释很详细,都可以看懂。 图片路径修改成本地图片位置,直接就可以运行。 -
Python实现图片添加水印(支持中文、英文和图片)
2021-12-18 17:35:41阅读大纲 •图片水印忽大忽小问题研究 •中文水印乱码问题 •水印的动态展示欢迎关注个人公众号 DailyJobOps
阅读大纲
- 图片水印忽大忽小问题研究
- 中文水印乱码问题
- 水印的动态展示
背景
在上次CSDN中发表技术文章的时候,文章中涉及到图片,CSDN会自动上传然后添加水印,突然注意到上传之后的图片的
水印超级小
,就在右下角一丢丢点
,不注意还以为没有添加呢,然后对比这里之前文章的水印发现显示挺正常合适的。为啥有时候显示的很适合,有时候显示的特别小呢?
然后去微信公账号的平台测试下了,同样的图片,微信公众号显示合适(比例、位置等看来正常,不是忽大忽小)
研究问题所在
之前用Python写过给图片添加水印的小工具,然后用该工具经常测试、验证问题所在。
经过使用不同尺寸和大小的图片测试和验证发现问题所在。出现在两个点上
1、水印举例图片边距是固定的,比如都是10px
2、文字水印没有设置字体或者设置了固定大小针对第一个点,比如图片A尺寸
300px * 200px
,如果默认边距是10px。下面这个是测试使用的Demo程序
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/12/18 5:51 下午 # @Author : Colin # @Email : colin@colinspace.com # @File : testImageWatermark.py # @Software : PyCharm # from PIL import Image from PIL import ImageDraw # 定义一个水印 watermark = "Hello Python!" # 定义边距,水印举例原始图片的边距 border = 10 # 先画一个尺寸为200*300背景色为灰色的图片;然后通过设置不同的尺寸来观察水印的位置和大小 # img = Image.new('RGBA', (300, 200), 'gray') # img = Image.new('RGBA', (900, 600), 'gray') img = Image.new('RGBA', (3000, 2000), 'gray') text_layer = ImageDraw.Draw(img) # 计算水印文字的大小,为了更精确的存放水印位置 text_xy = text_layer.textsize(watermark) # 注意计算位置,添加水印一般都是 左上角、右上角、右下角、左下角或者中心位置等特殊点;最常见的就是在右下角 # 计算水印在右下角的位置 watermark_xy = (img.size[0] - text_xy[0] - 10, img.size[1] - text_xy[1] - 10) # print("原始图片的大小: ", img.size) # print("水印文字的大小: ", text_xy) # print("水印文字的位置: ", watermark_xy) text_layer.text(watermark_xy, watermark, fill='orange') img.show()
通过调整原始图片的大小,然后展示最终的结果很容易发现问题,为了节约篇幅,把三次测试结果调整到一个截图中缩放到相同的尺寸,可以看到
图片越大,水印(水印本身的大小没有发生变化)越来越小
同样的,如果设置了水印的字体,但是字体大小固定
,即使边距随之动态变化
,那么情况也和上面类似,只是水印的位置不固定了而已。因为设置字体设计到
中文水印乱码
的问题,我们放到第二趴介绍。同时这里思考一个问题,如何实现水印
边距随之动态变化
?
中文水印乱码
中文水印乱码或者
更正确的说是中文水印导致的报错
问题。报错信息如下
原因就是
未配置字体
导致的,至于为什么,可以查看pillow的源码中ImageFont.py
ImageFont 类中getmask方法中提示If the font uses antialiasing, the bitmap should have mode ``L`` and use a maximum value of 255. Otherwise, it should have mode ``1``.
我们修改最开始的Demo,添加如下代码
# 定义字体 font_path = "/Users/colinspace/Library/Fonts/LXGWWenKai-Regular.ttf" font = ImageFont.truetype(font_path, 20) # 修改添加font text_xy = text_layer.textsize(watermark, font=font) text_layer.text((100, 50), watermark, fill='orange', font=font)
最终的完整Demo代码详见 testImageWatermark.py
水印的动态展示
水印的动态上面提到需要解决两个问题
1、水印距离原始图片的动态边距
2、水印字体大小的动态设定为了解决
动态设定
使之随图片尺寸而变化。最简单的就是通过百分比
来实现,取长或者宽的百分比。代码如下# 左右间距,采用图片比例的扩展,可以有效解决不同大小图片,水印位置相对一致 border = 0 if im.size[0] > im.size[1]: border = int(im.size[1]/100*3) else: border = int(im.size[0]/100*3) # 设置字体 font_path = "/Users/colinspace/Library/Fonts/LXGWWenKai-Regular.ttf" # 字体大小设置为上面定义的border,这样可以修复遇到超大图片时因为设定固定字体导致文字水印过小的问题 font = ImageFont.truetype(font_path, border)
最终完善工具脚本支持
1、中文、英文 文字水印
2、图片水印
3、修复因为图片过大导致 文字水印超小的问题
4、解决中文水印乱码问题
5、支持添加到不同的位置,左上角、右上角、左下角、右下角、中心位置
6、支持设置水印颜色最终完整脚本详见: python添加水印工具
或者 CSDN的资源下载
可以关注公众号,第一时间获取最新分享哦~
References
[1] testImageWatermark.py: https://gitee.com/colin5063/cws-tools/blob/master/python/testImageWatermark.py
[2] python添加水印工具: https://gitee.com/colin5063/cws-tools/blob/master/python/cws_image.py -
用Python给图片添加水印的3种方法,简单实用
2021-10-01 00:32:08来源:关于数据分析与可视化今天来分享几种可以给图片添加水印的方法,都是十分的简单实用,大家在看了之后也可以私底下去自己试试,有些方法需要的代码量就比较少,有些方法需要的代码量就稍微多一些,...来源:关于数据分析与可视化
今天来分享几种可以给图片添加水印的方法,都是十分的简单实用,大家在看了之后也可以私底下去自己试试,有些方法需要的代码量就比较少,有些方法需要的代码量就稍微多一些,那我们开始吧
opencv模块
首先我们用opencv这个库来给图片添加水印,主要用到的函数是cv2.putText()方法,里面共有大概9个参数,当然我们并不需要将这个9个参数统统用到,
下面分别为大家来讲述一下cv2.putText()方法中9个参数的含义,介绍如下:
image:印有水印的图片
text:水印的具体文字
org:水印放置的横纵坐标,(x坐标,y坐标)
font、fontScale:水印的字体相关的参数
color:水印的颜色
thinkness、lineType、bottomLeftOrigin:印有水印的图片相关的设置,线条的粗细哇、线条的样式哇等等
下面我们来看一下具体的代码把
img=cv2.imread("test2.jpg") # 导入我们需要添加水印的图片 RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) blank_img = np.zeros(shape=(RGB_img.shape[0],RGB_img.shape[1],3), dtype=np.uint8) font = cv2.FONT_HERSHEY_SIMPLEX # 添加水印的文字内容 cv2.putText(blank_img,text='Learn Python',org=(40, 90), fontFace=font,fontScale= 2, color=(255,0,0),thickness=10,lineType=cv2.LINE_4)
然后我们将印有水印的图片和原图进行结合,代码如下
blended = cv2.addWeighted(src1=RGB_img, alpha=0.7, src2=blank_img, beta=1, gamma = 2) plt.imshow(blended)
出来的结果是这样
PIL模块
PIL是Python的第三方图像处理库,其中Image模块作为PIL库的基本核心类,可以用来例如加载图像和创建新图像等用途,而说到给在图片上添加水印,要用到的方法就是ImageDraw.Draw.text(),里面有包括6个参数,其中经常被用到的也就下面四个
xy:添加水印的坐标,x坐标和y坐标
text:具体添加水印的文本内容
fill、font:具体文本内容的样式、字体大小等等
下面我们来看一下具体的代码长什么样子
im = Image.open('test1.jpg') draw = ImageDraw.Draw(im) text = "Learn Python" # 设置字体、字体大小等等 font = ImageFont.truetype('arial.ttf', 33) # 添加水印 draw.text((50, 50), text, font=font) im.show() # 保存图片 im.save('watermark2.jpg')
出来的结果是这个样子
filestools模块
最后我们要介绍的则是filestools模块,其本质上也是对ImageDraw.Draw.text()方法做了进一步的封装,让我们用起来会更加的简便,对比前者,我们使用add_mark()方法可以生成数量较多的水印,该方法当中里面有8个参数,其中比较重要的几个是
mark:水印的文字内容
color、size、opacity、space、angle:水印文字的样式包括文字的大小、颜色、透明程度等等
我们现在来看一下具体的代码
from watermarker.marker import add_mark add_mark(file = "test1.jpg", out = "add_mark_test1.jpg", mark = "Python", opacity=0.2, angle=30, space=30)
出来的结果长这个样子
具体采用哪种方法,读者可以自己斟酌地来使用,学习愉快!
---------End---------
顺便给大家推荐下我的微信视频号「Python数据之道」,欢迎扫码关注。
-
2行Python给图片加水印,太强了!
2022-01-11 00:21:59大家好,我是菜鸟哥!今天给大家分享一个非常实用的招数,对于某张图片,可能是你精心制作的思维导图,或者你精心设计的某个logo。你可能花费好多时间来弄,最后却被别人直接搬运过去使用,好气哦!...大家好,我是菜鸟哥!
今天给大家分享一个非常实用的招数,对于某张图片,可能是你精心制作的思维导图,或者你精心设计的某个logo。你可能花费好多时间来弄,最后却被别人直接搬运过去使用,好气哦!
基于此,本文我就带着大家学学如何给你的
图片加水印
,仅需要2行Python代码,任何人都可以学会。有的同学说用美图秀秀不香吗,但是那个图片要上传到别人的服务器,有一些资料不适合,一旦上传你的图片就已经被别人拿走了。所以能自己动手,肯定是最安全的。
filestools库介绍
今天给大家介绍的Python库,叫做filestools,由小小明开发,直接使用如下命令,安装后使用。
pip install filestools --index-url=http://mirrors.aliyun.com/pypi/simple -U
这个库一共集成了4个功能,4个库都已经全部迁移到了filestools库中,因此安装这一个库,就可以使用所有的4个功能了,你只需要在使用对应功能,分别导入对应的模块即可。
# 给图片加水印 from watermarker.marker import add_mark
add_mark()方法一共有8个参数,如果你不知道怎么查看参数,在jupyter notebook可以输入如下命令,即可查看。
下面分别为大家讲述add_mark()方法中8个参数的含义,介绍如下 :
file: 待添加水印的照片;
mark: 使用哪些字作为水印;
out: 添加水印后保存的位置;
color: 水印字体的颜色,默认颜色#8B8B1B;
size: 水印字体的大小,默认50;
opacity: 水印字体的透明度,默认0.15;
space: 水印字体之间的间隔, 默认75个空格;
angle: 水印字体的旋转角度,默认30度;接下来,我们仅用一行代码,给图片添加水印。
一行代码给图片加水印
原图长这样:
使用下面这行代码,仅仅两行代码:
from watermarker.marker import add_mark add_mark(file=r"aixin.jpg", out=r"C:\Users\Administrator\Desktop\练习", mark="人生苦短,快学Python", opacity=0.2, angle=45, space=30)
加水印后长这样:
最后再为大家解释一下,这一行代码的含义。
add_mark(file=r"aixin.jpg", out=r"C:\Users\Administrator\Desktop\练习", mark="人生苦短,快学Python", opacity=0.2, angle=45, space=30)
含义: 给当前工作环境下名为
aixin.jpg
的图片,添加一张水印。水印字样为快学Python
,水印透明度是0.2
,水印的旋转角度是45°
,水印之间的间隔是30
个空格。添加水印后,最后将处理后的图片保存在一个指定目录
下。如果你想详细学习filestools库,参考下方网站:
https://pypi.org/project/filestools/
最后新年来了,说一下我们的新动作
我们理财交流小分队成立了,新的一年来啦,一起提高自己的理财技能,互相切磋抱团取暖,交流信息。去年没有抓住新能源这个大腿,错过一大波的红利,可见信息差有多重要,如何把握热点,如何提高整体的理财策略,如何降低分险,仓位如何控制,都需要好好研究。今年赶紧成了一个小分队,一起共商大计。
目前群里有一些基金高手,有兴趣的可以在后台输入:小助手,找他加入,暗号:基金
(小助手有可能不定时启动了群确认,先找一下小助手)
推荐阅读: 入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径 干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 | 从万众期待到口碑扑街!唐探3令人失望 | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影 趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏! AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影 小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!| 再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|
年度爆款文案
点阅读原文,看200个Python案例!
-
太妙了!几个用Python给图片添加水印的方法,简单实用!
2021-11-28 00:57:33今天来分享几种可以给图片添加水印的方法,都是十分的简单实用,大家在看了之后也可以私底下去自己试试,有些方法需要的代码量就比较少,有些方法需要的代码量就稍微多一些,那我们开始吧opencv模... -
用Python给图片添加水印的方法,简单实用
2021-09-28 00:17:35今天来分享几种可以给图片添加水印的方法,都是十分的简单实用,大家在看了之后也可以私底下去自己试试,有些方法需要的代码量就比较少,有些方法需要的代码量就稍微多一些,那我们开始吧opencv模... -
Python如何为图片添加水印
2020-12-16 04:52:05网上有很多制作水印的工具,本帖介绍怎么使用Python-Pillow库给图片添加水印。使用ImageMagick添加图片水印-Linux 添加文本水印在图片右下角添加文字:from PILimport Image, ImageDraw, ImageFont# 指定要使用的... -
python 图片添加水印 pdf 添加水印
2020-12-04 23:02:171 #/usr/bin/env python2 #-*- coding:utf-8 -*-3 #本示例使用两个第三方库来实现为PDF文件添加文字水印4 #这两个库是pyPdf和reportlab5 #使用的Python版本是Python 2.76 #... -
python给图片添加水印
2018-08-09 18:23:27一:添加字体 #打开图片 im = Image.open("./222.jpg").convert('RGBA') #新建一个空白图片,尺寸与打开图片一样 txt=Image.new('RGBA', im.size, (0,0,0,0)) #设置字体 fnt=ImageFont.truetype("c:/... -
Python PIL 图片水印添加
2021-01-13 17:53:03非常感谢 这个博主 http://linsir.org/post/python-add-watermark-with-PIL之前写的一个为图片增加水印的小脚本不好用了一刚!!原来的小脚本,from PIL import Image, ImageDraw, ImageFontimport timedef ... -
python图片加水印
2021-11-04 10:17:37想给身份证加水印,从小白开始接触了python。 代码在最下面,记录一下这里遇到的坑。 代码没啥大问题,但是会报错“ No module named ‘PIL’ ”,几番搜索之后,发现,PIL好像在2.7版本后就不维护了,我python3.x的... -
python图形数字水印和添加水印后的jpeg攻击,裁剪攻击,噪声攻击。
2021-08-12 23:10:53#资源达人分享计划# 图形数字水印和添加水印后的jpeg攻击,裁剪攻击,噪声攻击。 -
Python给图片添加文字/图片水印
2020-02-26 19:00:10给图片添加文字水印 from PIL import Image, ImageDraw, ImageFont # 指定要使用的字体和大小; #font = ImageFont.truetype('C:/Windows/Fonts/simsun.ttc', 44,index=0) font = ImageFont.truetype('C:/... -
Python批量添加图片水印
2021-09-30 23:38:54我们可以给图片添加水印后再分享出去,这样就可以让其它人知道图片作者相关的信息。今天我们就带大家来实现水印的添加。 二、文字水印 在添加水印的时候,我们比较常用的就是文字水印。比如@ZackSock、@juejin:... -
分享几个用 Python 给图片添加水印的方法,简单实用
2021-10-07 00:02:57作者 |俊欣来源 |关于数据分析与可视化今天来分享几种可以给图片添加水印的方法,都是十分的简单实用,大家在看了之后也可以私底下去自己试试,有些方法需要的代码量就比较少,有些方法需要的代码量... -
python给图片加水印详解
2021-02-03 14:51:52文章目录1、打开原图片,转换2、新建空白图3、设置水印字体4、创建新的空白图5、添加字体6、合并图片7、保存图片 1、打开原图片,转换 from PIL import Image, ImageDraw, ImageFont from io import BytesIO # 打开... -
Python3 图片添加水印
2020-06-11 12:39:35* 3, image.size[1] * 3), (0, 0, 0, 0)) new_img.paste(image, image.size) # 添加水印 font_len = len(text) rgba_image = new_img.convert('RGBA') text_overlay = Image.new('RGBA', rgba_image.size, (255, ... -
Python添加pdf水印
2021-04-27 08:39:241、创建水印PDF。1)、创建文字水印pdf文件代码:#encoding=utf-8#author:walker#date:2014-03-17#function:创建文字水印pdffromreportlab.pdfgenimportcanvasfromreportlab.lib.unitsimportcmdefcreate_watermark... -
Python图片添加水印修改MD5值
2020-05-15 15:51:18Python图片添加水印修改MD5值效果图安装pillow(python图形界面库)生成水印查看MD5值 效果图 安装pillow(python图形界面库) pip install pillow 试了好几次了不知道为什么总数装到一半报错 看到一位朋友发的... -
分享几个用Python给图片添加水印的方法,简单实用
2021-09-27 00:49:13公众号后台回复“图书“,了解更多号主新书内容 作者:俊欣 来源:关于数据分析与可视化今天来分享几种可以给图片添加水印的方法,都是十分的简单实用,大家在看了之后也可以私底下去... -
如何用Python给图片添加文字/图片水印的方法,特别简单好用,filestools和Pil模块
2022-03-21 16:21:32一直想给要发表的图片加上自己的水印,但找了很长时间一直没有合适的方法,最近因疫情关系,所以有机会多花点时间在网上找到各种方案,其中这位网友 “风度78” 的分享还不错,但不够详细,缺了不少相关的部分,作为... -
Python批量为图片加水印
2022-05-12 22:24:17len(files)): #图片路径,必须是当前目录下 imagefile = files[i] #打开图片 imageInfo = Image.open(imagefile) #获取图片尺寸 print(imageInfo.size) #设置图片水印的字体的字号 fontOne = ImageFont.truetype("C:...