Python编写实现图片加水印的程序
发布时间:2024-01-09 07:01:45
下面是一个使用Python编写的实现图片加水印的程序示例,用来给图片添加文字水印:
from PIL import Image, ImageDraw, ImageFont
def add_watermark(image_path, watermark_text, position=(10, 10), font_path=None, font_size=40, opacity=128):
# 打开图片
image = Image.open(image_path).convert('RGBA')
width, height = image.size
# 创建一个新的空白图片,用于添加水印
watermark = Image.new('RGBA', image.size, (0, 0, 0, 0))
draw = ImageDraw.Draw(watermark)
# 设置水印文字的字体和大小
font = ImageFont.truetype(font_path, font_size)
# 计算水印文字的坐标位置
text_width, text_height = draw.textsize(watermark_text, font)
x = position[0] if position[0] >= 0 else width - text_width + position[0]
y = position[1] if position[1] >= 0 else height - text_height + position[1]
# 绘制水印文字
draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, opacity))
# 混合原始图片和水印图片
watermarked = Image.alpha_composite(image, watermark)
# 保存加水印后的图片
watermarked.save('watermarked_image.png')
# 使用示例
add_watermark('image.jpg', 'Watermark', font_path='font.ttf', opacity=128)
上述程序使用Pillow库(一个常用的Python图像处理库)来实现图片加水印的功能。
主要步骤如下:
1. 导入需要的库:Pillow库的Image、ImageDraw和ImageFont模块。
2. 定义add_watermark函数,参数包括图片路径、水印文字、水印位置、字体路径、字体大小和透明度。
3. 使用Image.open()打开原始图片,并将其转换为RGBA格式。获取图片的宽度和高度。
4. 创建一个新的空白图片作为水印层,并创建一个ImageDraw.Draw对象,用于绘制水印文字。
5. 使用ImageFont.truetype()加载指定字体路径和字体大小的字体。
6. 根据水印位置计算水印文字的坐标位置。
7. 使用draw.text()在水印层上绘制水印文字,设置填充颜色为白色(255, 255, 255)和指定的透明度。
8. 使用Image.alpha_composite()将原始图片和水印层混合在一起,生成加水印后的图片。
9. 使用watermarked.save()保存加水印后的图片。
在使用示例中,调用add_watermark()函数来给名为image.jpg的图片添加水印文字Watermark,字体使用了名为font.ttf的字体文件,透明度设置为128。添加水印后的图片保存为watermarked_image.png。
需要注意的是,需要提供合适的字体文件路径,下载所需的字体文件,并将其替换为'font.ttf'路径。
可以根据实际需求调整函数参数和调用代码,来实现更加灵活的图片加水印功能。
