python使用PIL模块实现给图片打水印的方法


Posted in Python onMay 22, 2015

本文实例讲述了python使用PIL模块实现给图片打水印的方法。分享给大家供大家参考。具体实现方法如下:

import Image, ImageEnhance
def reduce_opacity(im, opacity):
  """Returns an image with reduced opacity."""
  assert opacity >= 0 and opacity <= 1
  if im.mode != 'RGBA':
    im = im.convert('RGBA')
  else:
    im = im.copy()
  alpha = im.split()[3]
  alpha = ImageEnhance.Brightness(alpha).enhance(opacity)
  im.putalpha(alpha)
  return im
def watermark(im, mark, position, opacity=1):
  """Adds a watermark to an image."""
  if opacity < 1:
    mark = reduce_opacity(mark, opacity)
  if im.mode != 'RGBA':
    im = im.convert('RGBA')
  # create a transparent layer the size of the image and draw the
  # watermark in that layer.
  layer = Image.new('RGBA', im.size, (0,0,0,0))
  if position == 'tile':
    for y in range(0, im.size[1], mark.size[1]):
      for x in range(0, im.size[0], mark.size[0]):
        layer.paste(mark, (x, y))
  elif position == 'scale':
    # scale, but preserve the aspect ratio
    ratio = min(
      float(im.size[0]) / mark.size[0], float(im.size[1]) / mark.size[1])
    w = int(mark.size[0] * ratio)
    h = int(mark.size[1] * ratio)
    mark = mark.resize((w, h))
    layer.paste(mark, ((im.size[0] - w) / 2, (im.size[1] - h) / 2))
  else:
    layer.paste(mark, position)
  # composite the watermark with the layer
  return Image.composite(layer, im, layer)
def test():
  im = Image.open('test.png')
  mark = Image.open('overlay.png')
  watermark(im, mark, 'tile', 0.5).show()
  watermark(im, mark, 'scale', 1.0).show()
  watermark(im, mark, (100, 100), 0.5).show()
if __name__ == '__main__':
  test()

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
用Python脚本生成Android SALT扰码的方法
Sep 18 Python
详解Python中的__new__()方法的使用
Apr 09 Python
Django实现简单分页功能的方法详解
Dec 05 Python
Anaconda下配置python+opencv+contribx的实例讲解
Aug 06 Python
python机器学习之神经网络实现
Oct 13 Python
PyCharm在新窗口打开项目的方法
Jan 17 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
在PyTorch中使用标签平滑正则化的问题
Apr 03 Python
使用keras和tensorflow保存为可部署的pb格式
May 25 Python
使用python实现下载我们想听的歌曲,速度超快
Jul 09 Python
Python代码注释规范代码实例解析
Aug 14 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
python实现读取命令行参数的方法
May 22 #Python
Python中返回字典键的值的values()方法使用
May 22 #Python
python复制文件的方法实例详解
May 22 #Python
在Python中操作字典之update()方法的使用
May 22 #Python
python判断图片宽度和高度后删除图片的方法
May 22 #Python
在Python中操作字典之setdefault()方法的使用
May 21 #Python
在Python中用keys()方法返回字典键的教程
May 21 #Python
You might like
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
swiper 自动图片无限轮播实现代码
2018/05/21 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
Python3实现Web网页图片下载
2016/01/28 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
Linux下多个Python版本安装教程
2018/08/15 Python
python tkinter组件使用详解
2019/09/16 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
棉花姑娘教学反思
2014/02/15 职场文书
新年联欢会主持词
2014/03/27 职场文书
党员自我对照检查材料
2014/08/19 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
弘扬焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
2014保险公司个人工作总结
2014/12/09 职场文书
2015企业年终工作总结范文
2015/05/27 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android