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列表去重的二种方法
Feb 14 Python
python打开文件并获取文件相关属性的方法
Apr 23 Python
举例讲解Python的lambda语句声明匿名函数的用法
Jul 01 Python
遍历python字典几种方法总结(推荐)
Sep 11 Python
Python基于回溯法子集树模板解决数字组合问题实例
Sep 02 Python
VSCode下好用的Python插件及配置
Apr 06 Python
查看端口并杀进程python脚本代码
Dec 17 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
Jan 10 Python
django中的数据库迁移的实现
Mar 16 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
Mar 19 Python
Python进行特征提取的示例代码
Oct 15 Python
详解java调用python的几种用法(看这篇就够了)
Dec 10 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
PHP 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
PHP二维索引数组的遍历实例分析【2种方式】
2019/06/24 PHP
在javascript中关于节点内容加强
2013/04/11 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
Windows系统下Node.js的简单入门教程
2015/06/23 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
package.json配置文件构成详解
2019/08/27 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
用Python遍历C盘dll文件的方法
2015/05/06 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
CSS3.0实现霓虹灯按钮动画特效的示例代码
2021/01/12 HTML / CSS
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
影视艺术学院毕业生自荐信
2013/11/13 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
工伤事故赔偿协议书范文
2014/09/24 职场文书
党员作风建设自查报告
2014/10/23 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
今日说法观后感
2015/06/08 职场文书
医院病假条范文
2015/08/17 职场文书
2016年小学中秋节活动总结
2016/04/05 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书