欢迎访问宙启技术站
智能推送

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'路径。

可以根据实际需求调整函数参数和调用代码,来实现更加灵活的图片加水印功能。