添加水印的主要目的是为了版权保护,使自己的图像不被抄袭或者恶意转载。网上有很多制作水印的工具,本帖介绍怎么使用python-pillow库给图片添加水印。
使用imagemagick添加图片水印-linux 添加文本水印
在图片右下角添加文字:
from pilimport image, imagedraw, imagefont # 指定要使用的字体和大小;/library/fonts/是macos字体目录;linux的字体目录是/usr/share/fonts/font = imagefont.truetype('/library/fonts/arial.ttf', 24) # image: 图片 text:要添加的文本 font:字体def add_text_to_image(image, text, font=font): rgba_image = image.convert('rgba') text_overlay = image.new('rgba', rgba_image.size, (255, 255, 255, 0)) image_draw = imagedraw.draw(text_overlay) text_size_x, text_size_y = image_draw.textsize(text, font=font) # 设置文本文字位置 print(rgba_image) text_xy = (rgba_image.size[0] - text_size_x, rgba_image.size[1] - text_size_y) # 设置文本颜色和透明度 image_draw.text(text_xy, text, font=font, fill=(76, 234, 124, 180)) image_with_text = image.alpha_composite(rgba_image, text_overlay) return image_with_text im_before = image.open(lena.jpg)im_before.show()im_after = add_text_to_image(im_before, 'wtf')im_after.show()# im.save('im_after.jpg')
添加图片水印
frompilimportimage, imagedraw defadd_watermark_to_image(image, watermark): rgba_image = image.convert('rgba') rgba_watermark = watermark.convert('rgba') image_x, image_y = rgba_image.size watermark_x, watermark_y = rgba_watermark.size # 缩放图片 scale = 10 watermark_scale = max(image_x / (scale * watermark_x), image_y / (scale * watermark_y)) new_size = (int(watermark_x * watermark_scale), int(watermark_y * watermark_scale)) rgba_watermark = rgba_watermark.resize(new_size, resample=image.antialias) # 透明度 rgba_watermark_mask = rgba_watermark.convert(l).point(lambda x: min(x, 180)) rgba_watermark.putalpha(rgba_watermark_mask) watermark_x, watermark_y = rgba_watermark.size # 水印位置 rgba_image.paste(rgba_watermark, (image_x - watermark_x, image_y - watermark_y), rgba_watermark_mask) return rgba_image im_before = image.open(lena.jpg)im_before.show() im_watermark = image.open(watermark.jpg)im_after = add_watermark_to_image(im_before, im_watermark)im_after.show()# im.save('im_after.jpg')