为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

python图片加水印

2017-09-02 6页 doc 43KB 64阅读

用户头像

is_633423

暂无简介

举报
python图片加水印python图片加水印 图片加“水印”的制作过程 我们经常会看见一些地图网站的地图切片上都有一个logo标志,例如下图上面就有一个标志, 86NB.com 很明显吧~ 这样logo是怎么加上去的呢,我就花了点时间在网上查了查资料,原来网上的方法很多,但是我更倾向使用Python来实现这个东西。Python脚本的优点在这里就不具体介绍了,虽然Python我会的只是点皮毛,但是解决些常规问题还是可以的。 现在我就介绍下实现所谓“水印”的效果是什么样的一个过程:在我具体操作之后,觉得整个过程分为3个部分 一、 Pyth...
python图片加水印
python图片加水印 图片加“水印”的制作过程 我们经常会看见一些地图网站的地图切片上都有一个logo标志,例如下图上面就有一个标志, 86NB.com 很明显吧~ 这样logo是怎么加上去的呢,我就花了点时间在网上查了查资料,原来网上的很多,但是我更倾向使用Python来实现这个东西。Python脚本的优点在这里就不具体介绍了,虽然Python我会的只是点皮毛,但是解决些常规问题还是可以的。 现在我就介绍下实现所谓“水印”的效果是什么样的一个过程:在我具体操作之后,觉得整个过程分为3个部分 一、 Python环境的配置 Python环境配置很简单,若你安装了ArcGIS DeskTop,则只需要安装一个python包,PIL图片处理库,这个库对图片处理的功能很强大(The Python Imaging Library (PIL) allows you to create, modify, and convert image files in a wide variety of formats using the Python language.)。环境配置好了就可以进行下一步工作了。 二、 Logo的制作 Logo在这里我觉得只分为两种,一种是文字,另一种是图片。文字是指把文字直接加到图片上去,成为“水印”,而后者则是把图片加到图片上成为“水印”。在这里只介绍下图片类型,是因为好多很好看的Logo都是图文并茂的。 Logo制作,在这里我只在PS里试了下,主要注意几点,Logo必须PNG格式的图片,而且最好把Logo做的尺寸不要超过所加图片的尺寸,在这里我所加的图片都是256px*256px的,Logo大小为180px*30px(具体要这么做,只是减少程序里的复杂度),接下来就是PS里操作了,我就不具体说了,Logo如下图(PS水平有限,前面图标的背景轮廓没给除掉): 三、AddLogo.py的代码编写 Python脚本语言很有灵活性,但是它的格式也常会令生手头痛。因为它的语句缩进直接和语句运行顺序有关。有兴趣可以去看看Python脚本的基本语法,你就会明白了~ 代码如下:(这些网上都有的,一些高人早就发到网上了,我只是综合整理且实际操作了下) # -*- coding: utf-8 -*- import Image, ImageEnhance #引用所需的库 POSITION = ('LEFTTOP','RIGHTTOP','CENTER','LEFTBOTTOM','RIGHTBOTTOM',"title","scale") #Logo的位置 PADDING = 10 MARKIMAGE = r'E:\学习\python\tt1.png' # Logo图片的位置 def reduce_opacity(im, opacity): # 处理Logo的透明度 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(imagefile, markfile, position=POSITION[4], opacity=0.1): im = Image.open(imagefile) mark = Image.open(markfile) if opacity < 1: mark = reduce_opacity(mark, opacity) if im.mode != 'RGBA': im = im.convert('RGBA') # 创建一个透明层,根据位置 来画Logo. layer = Image.new('RGBA', im.size, (0,0,0,0)) if position == 'title': 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)) elif position == POSITION[0]: #左上角 position = (PADDING,PADDING) layer.paste(mark, position) elif position == POSITION[1]: #右上角 position = (im.size[0] - mark.size[0]-PADDING, PADDING) layer.paste(mark, position) elif position == POSITION[2]: #中间 position = ((im.size[0] - mark.size[0])/2,(im.size[1] - mark.size[1])/2) layer.paste(mark, position) elif position == POSITION[3]: #左下角 position = (PADDING,im.size[1] - mark.size[1]-PADDING,) layer.paste(mark, position) else: #右上角 position = (im.size[0] - mark.size[0]-PADDING, im.size[1] - mark.size[1]-PADDING,) layer.paste(mark, position) # 组合起来就可以啦 return Image.composite(layer, im, layer) new_image_s_filename=r"E:\学习\python\test.png" # 要加水印的图片 watermark(new_image_s_filename,MARKIMAGE,POSITION[2],opacity=0.2).save(new_imag e_s_filename,quality=90) 双击运行AddLogo.py文件就可以了。效果如下图: 效果就是这样,至于和人家的效果有差别,很正常啊,因此,我们在logo制作上有待改进,logo美观和标志性,添加到图片上还要选择适当logo的透明度,这些都要考虑。 好了若你想把很多图片,例如咱们地图切片数据添加“水印”,就很方便了,在这基础上加个循环就OK啦,即使你有成千上万张图片都是小Case了,只要电脑实力够强大,你只要双击运行脚本程序,就把任务交给电脑来做了,它会很快的完成任务,而你就可以在这个时间中去打打篮球了~ 我们都知道图片加“水印”主要是版权保护之举,目前这种方法倒是很实用,据我了解目前把水印加上去容易、若再把水印除掉就有点难了,这个过程可逆性难度很大(呵呵,其实一旦人家能获取这个Logo原始图,那就惨了,除去水印就有办法解决了,只是网上的全是PS具体操作,不是用程序来解决这个问题,所以大量的图片要除去水印,那工作量大的吓人啊~不过可能有技术能做到这点,只是我还不知道罢了)~所以这种加了水印的地图数 据即使被别人Down去再拼起来使用,是大大费功夫的额~至于目前主流的“数字水印”技术,这个方法还不是一个等级上的概念,对“数字水印”技术有兴趣是可以去学习下的,毕竟学海无涯啊~ 虽然这个做“水印”的方法早就不是什么难点,但是对于我,通过实际学习,收获很多啊~学海当中,高人无数,只要我们时刻保持拥有一颗对学习充满热情的心,就会在学习知识的道路上获取无尽的快乐,为工作做好坚实的基础~
/
本文档为【python图片加水印】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索