Python(黄金时代)—— 超简单:两种给图片添加水印的方式

本文介绍了如何使用Python的PIL库和filestools库为图片添加水印,比较了两者在易用性、功能和适用场景上的优劣,并提供了安装和代码示例。

方式一:PIL库


介绍

**Python Imaging Library (PIL)**是Python提供的一个很强大的图像处理库。这个库提供了一些图像处理的核心功能,很适合进行简单的图像操作和快速原型制作。使用PIL给图片添加水印也非常的简单。

安装

pip install pillow

代码示例

from PIL import Image``from PIL import ImageDraw``from PIL import ImageFont``   ``   ``def add_watermark(input_image_path, output_image_path, watermark_text, transparency):`    `# 打开输入图片,将其转换为RGBA模式(如果需要)`    `base_image = Image.open(input_image_path).convert("RGBA")``   `    `# 设置水印的字体和大小`    `font = ImageFont.truetype("msyh.ttc", 48)`    `text_color = (255, 255, 255, transparency)``   `    `# 在透明图片上绘制水印`    `watermark_text_obj = Image.new('RGBA', base_image.size, (0, 0, 0, 0))`    `draw = ImageDraw.Draw(watermark_text_obj)`    `base_image_width, base_image_height = base_image.size`    `for x in range(0, base_image_width, base_image_width // 4):`        `for y in range(0, base_image_height, base_image_height // 4):`            `draw.text((x, y), watermark_text, font=font, fill=text_color)``   `    `# 旋转水印文本对象`    `watermark_text_obj = watermark_text_obj.rotate(30, expand=True)``   `    `# 创建一个与图片相同大小的透明图层`    `watermark_layer = Image.new("RGBA", base_image.size, (0, 0, 0, 0))`    `watermark_layer.paste(watermark_text_obj, (-20, -20), mask=watermark_text_obj)``   `    `# 将水印层和底图合成`    `watermarked_image = Image.alpha_composite(base_image, watermark_layer)``   `    `# 转换回原始图片模式并保存`    `watermarked_image = watermarked_image.convert("RGB")`    `watermarked_image.save(output_image_path)``   ``   ``if __name__ == "__main__":`    `add_watermark("demo.jpg", "demo_water.jpg",`                  `"程序猿知秋", transparency=160)

注: 如果水印的文字是中文的,需要使用中文对应的字体

具体可以使用的字体可自行在系统中查看

**Windows系统:**C:\Windows\Fonts\` 文件夹中

Linux或macOS系统:`/Library/Fonts/`(macOS)或 `/usr/share/fonts/`(Linux)文件夹中

最终效果

方式二:filestools库

介绍

Filestools是一款强大而实用的Python库,是管理具体文件和所在文件夹的绝佳工具。它的功能包括在文件系统中创建,删除,复制,移动文件及目录,以及查询文件的基础元数据,比如大小,修改时间等等。 最重要的是它还可以帮助我们来给图片添加水印。

安装

pip install filestools

简单示例(一行代码搞定)

`from watermarker.marker import add_mark``   ``"""``参数说明``file:待添加水印的图片(文件或目录)``mark:水印的文字``out:添加水印后的输出文件目录``color:水印字体的颜色,默认是 #8B8B1B``size:水印字体的大小,默认是50``opacity:水印字体的透明度,默认是 0.15, 取值范围:0~1``space:水印字体之间的间隔,默认是 75个空格``angle:水印字体的旋转角度,默认 30度``"""``   ``add_mark(file="demo.jpg",out="./output",mark="程序猿知秋"`         `,color="#FFFFFFA0",opacity=0.5,angle=30,space=100,size=48)`         

输出结果

两种方式的优劣

使用filestools库

优势:

  • **简单易用:**filestools库可以轻松地加载图像并添加水印,无需编写大量代码。

  • **适用于批量操作:**filestools库可以批量处理多个文件,非常适合针对一组图像应用相同的水印。

劣势:

  • **功能有限:**filestools库的功能相对有限,只能对文件结构进行一些基本的处理,例如添加水印。

  • 不支持多种颜色空间和格式:对于具有不同颜色空间和格式的图像,filestools库可能无法很好地处理。

使用PIL库:

优势:

  • **功能强大:**PIL库是一个功能强大、成熟的图像处理库,可以实现各种复杂的图像操作,包括绘制、裁剪、滤镜等。

  • **强大的颜色空间和文件格式支持:**PIL库支持对各种颜色空间和文件格式的图像处理,包括RGB、RGBA、CMYK等,以及JPEG、PNG、GIF等格式。

劣势:

  • **学习成本相对较高:**相比于filestools,PIL库的学习曲线较陡,可能需要花费较多时间熟悉其功能和使用方法。

  • **不支持批处理:**尽管可以使用Python循环遍历多个文件或图像,但PIL库本身并不直接支持批量处理。

学习资源推荐

除了上述分享,如果你也喜欢编程,想通过学习Python获取更高薪资,这里给大家分享一份Python学习资料。

😝朋友们如果有需要的话,可以V扫描下方二维码联系领取

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

因篇幅有限,仅展示部分资料,添加上方即可获取

image-20230619144606466

二、Python基础学习
1. 开发工具

2. 学习笔记

在这里插入图片描述

3. 学习视频

在这里插入图片描述

三、Python小白必备手册

图片

四、数据分析全套资源

在这里插入图片描述

五、Python面试集锦
1. 面试资料

在这里插入图片描述

在这里插入图片描述

2. 简历模板

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值