用imageio库编写Python程序来添加图像的水印
发布时间:2023-12-25 04:01:21
使用imageio库,可以很方便地添加水印到图像上。下面是一个使用imageio库的Python程序示例,用来给图片添加水印:
import imageio
from PIL import Image, ImageDraw, ImageFont
def add_watermark(input_image, watermark_text, output_image):
# 读取原始图片
image = imageio.imread(input_image)
# 创建一个和原始图片尺寸相同的图像对象
new_image = Image.new('RGBA', (image.shape[1], image.shape[0]), (0, 0, 0, 0))
# 将原始图片绘制到新的图像对象上
new_image.paste(Image.fromarray(image), (0, 0))
# 创建水印文本的图像对象
watermark = Image.new('RGBA', new_image.size, (0, 0, 0, 0))
draw = ImageDraw.Draw(watermark)
# 设置水印文本的字体和大小
font = ImageFont.truetype("Arial.ttf", 50)
# 计算水印文本的宽度和高度
text_width, text_height = draw.textsize(watermark_text, font=font)
# 计算水印文本在图像中的位置
x = (new_image.size[0] - text_width) // 2
y = (new_image.size[1] - text_height) // 2
# 绘制水印文本到水印图像对象上
draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, 128))
# 将水印图像对象叠加到原始图像上
watermarked_image = Image.alpha_composite(new_image.convert('RGBA'), watermark)
# 保存结果图像
watermarked_image.save(output_image)
# 示例使用:给一张名为"input.jpg"的图片添加水印,水印文本为"Watermark"
add_watermark("input.jpg", "Watermark", "output.jpg")
在上面的示例中,我们首先使用imageio库的imread函数读取原始图片,然后使用PIL库创建一个和原始图片尺寸相同的图像对象。接着,我们使用PIL库的ImageDraw和ImageFont来创建水印并设置其字体和大小。
在创建水印图像对象后,我们计算水印文本的宽度和高度,并根据原始图片的大小来计算水印文本在图像中的位置。然后,我们使用draw.text函数绘制水印文本到水印图像对象上。
最后,我们使用Image.alpha_composite函数将水印图像对象叠加到原始图像上,并保存结果图像。
可以根据实际需求来修改上面的示例代码,例如修改水印的位置、颜色、透明度等。同时,还可以添加其他功能,如批量处理多张图片、使用自定义的水印图片等。
总之,使用imageio库和PIL库,我们可以轻松地编写Python程序来添加图像的水印,实现各种有趣和实用的应用。
