经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python3 » 查看文章
python3使用PIL添加中文文本水印背景
来源:cnblogs  作者:Mike_Zhang  时间:2023/7/5 9:28:21  对本文有异议
环境:Windows10_x64 
Python版本 :3.9.2
Pillow版本:9.1.1
 
写的博客文章被转载且不注明出处的情况时有发生,甚至有部分转载者将文章配图添加自己的水印!为了保护作者劳动成果,添加水印是一个可选项。
今天记录下Windows10环境下使用python3.9简单实现批量添加中文文本水印背景的过程,并提供示例代码及相关资源下载,可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20230704 获取。 

一、背景描述

python的PIL库可进行图片处理,十分强大,可使用该库实现图片添加水印背景的需求。
可通过pip进行安装(默认安装最新版),命令如下:
  1. pip install Pillow

pypi地址: https://pypi.org/project/Pillow/

二、具体实现

这里列举下实现文本水印背景的关键点。

1、生成文本背景

可通过ImageDraw.text实现:

 

中文文本可通过设置正确的字体实现:
  1. font = ImageFont.truetype("simsun.ttc", fontSize,encoding="utf-8")
文本颜色可通过RGB值设置,示例如下:
  1. fill=(106,106,106)

2、旋转文本

 可通过rotate函数实现:

 3、设置水印

可通过Image.paste函数实现:

 4、生成水印背景

1)需要通过循环控制,多次设置背景图片;
  1. i,j = 0,0
  2. while True:
  3. x,y = i*step,i*step
  4. if y < height :
  5. x = 0
  6. if y > height :
  7. x = j*step
  8. j = j + 1
  9. y = height - 10
  10. #print(i,"xy :",x,y)
  11. draw_text(img,(x,y),fill,mask,rotated_mask)
  12. if (x + step > width ) and (y + step > height ) : break
  13. i = i + 1
2)导出时需要添加质量参数,避免导出的图片失真;
  1. img.save(dstFile,optimize=True, quality=100)

5、多进程加速

批量添加文本水印背景时,可使用进程池进行加速。
  1. pool = Pool(processes=8) # set the processes max number
  2. for root, dirs, files in os.walk(srcDir):
  3. for name in files:
  4. srcFile = os.path.join(root, name)
  5. dstFile = os.path.join(dstDir, name)
  6. print("%s => %s" % (srcFile,dstFile))
  7. # add_watermark(srcFile,dstFile,fontSize,myText,angle,fill,step)
  8. result = pool.apply_async(add_watermark,(srcFile,dstFile,fontSize,myText,angle,fill,step))
  9. pool.close()
  10. pool.join()
完整源码可以从如下途径获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20230704 获取。 

三、运行效果

这里演示下python3使用PIL添加中文文本水印背景的运行效果,具体如下:

 运行效果演示视频获取途径:

关注微信公众号(聊聊博文,文末可扫码)后回复 2023070401 获取。 

四、资源下载

本文涉及源码和文件,可以从如下途径获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20230704 获取。 

原文链接:https://www.cnblogs.com/MikeZhang/p/pyWatermaker20230704.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号