方式一: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 的小伙伴们一点帮助!
一、Python学习路线
二、Python基础学习
1. 开发工具
2. 学习笔记
3. 学习视频
三、Python小白必备手册
四、数据分析全套资源
五、Python面试集锦
1. 面试资料
2. 简历模板
因篇幅有限,仅展示部分资料,添加上方即可获取