Python如何为图片添加水印

 更新时间:2016年11月25日 08:44:04   投稿:hebedich  
这篇文章主要介绍了Python如何使用Python-Pillow库给图片添加水印的方法,非常的简单实用,有需要的小伙伴可以参考下

添加水印的主要目的是为了版权保护,使自己的图像不被抄袭或者恶意转载。网上有很多制作水印的工具,本帖介绍怎么使用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')

相关文章

  • python实现flappy bird游戏

    python实现flappy bird游戏

    这篇文章主要为大家详细介绍了python实现flappy bird游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Python数据可视化常用4大绘图库原理详解

    Python数据可视化常用4大绘图库原理详解

    这篇文章主要介绍了Python数据可视化常用4大绘图库原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 使用Python实现3D曲线拟合

    使用Python实现3D曲线拟合

    曲线拟合是数据分析和数学建模领域中广泛使用的技术,它涉及到寻找最接近一组数据点的数学函数的过程,本文我们将讨论如何使用SciPy库在Python中执行3D曲线拟合,感兴趣的小伙伴可以了解下
    2023-11-11
  • 浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点

    浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点

    这篇文章主要介绍了浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • python 使用Yolact训练自己的数据集

    python 使用Yolact训练自己的数据集

    这篇文章主要介绍了python 使用Yolact训练自己的数据集,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • Python中使用logging模块代替print(logging简明指南)

    Python中使用logging模块代替print(logging简明指南)

    这篇文章主要介绍了Python中使用logging模块代替print的好处说明,主旨是logging模块简明指南,logging模块的使用方法介绍,需要的朋友可以参考下
    2014-07-07
  • Python中使用实现输出哈沙德数的多种方法小结

    Python中使用实现输出哈沙德数的多种方法小结

    哈沙德数(Harshad Number),又称Niven数,是指一个自然数,它可以被它的各位数字之和整除,本文将探讨如何使用多种不同的方法来判断一个数字是否是哈沙德数,感兴趣的可以了解下
    2024-01-01
  • Python+wxPython实现合并多个文本文件

    Python+wxPython实现合并多个文本文件

    在 Python 编程中,我们经常需有时候,我们可能需要将多个文本文件合并成一个文件,要处理文本文件,本文就来介绍下如何使用 wxPython 模块编写一个简单的程序,能够让用户选择多个文本文件,感兴趣的可以了解下
    2023-08-08
  • Django实现CAS+OAuth2的方法示例

    Django实现CAS+OAuth2的方法示例

    这篇文章主要介绍了Django实现CAS+OAuth2的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Pytorch在训练时冻结某些层使其不参与训练问题(更新梯度)

    Pytorch在训练时冻结某些层使其不参与训练问题(更新梯度)

    这篇文章主要介绍了Pytorch在训练时冻结某些层使其不参与训练问题(更新梯度),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论