图片加“水印”的制作过程;我们经常会看见一些地图网站的地图切片上都有一个l;很明显吧!;这样logo是怎么加上去的呢?我就花了点时间在网;现在我就介绍下实现所谓“水印”的效果是什么样的一;一、Python环境的配置;Python环境配置很简单,若你安装了ArcGI;二、Logo的制作;Logo在这里我觉得只分为两种,一种是文字,另一;Logo

图片加“水印”的制作过程

我们经常会看见一些地图网站的地图切片上都有一个logo标志,例如下图上面就有一个标志,

很明显吧!

这样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_image_s_filename,quality=90)

双击运行AddLogo.py文件就可以了。效果如下图:

效果就是这样,至于和人家的效果有差别,很正常啊,因此,我们在logo制作上有待改进,logo美观和标志性,添加到图片上还要选择适当logo的透明度,这些都要考虑。

好了若你想把很多图片,例如咱们地图切片数据添加“水印”,就很方便了,在这基础上加个循环就OK啦,即使你有成千上万张图片都是小Case了,只要电脑实力够强大,你只要双击运行脚本程序,就把任务交给电脑来做了,它会很快的完成任务,而你就可以在这个时间中去打打篮球了!

我们都知道图片加“水印”主要是版权保护之举,目前这种方法倒是很实用,据我了解目前把水印加上去容易、若再把水印除掉就有点难了,这个过程可逆性难度很大(呵呵,其实一旦人家能获取这个Logo原始图,那就惨了,除去水印就有办法解决了,只是网上的全是PS具体操作,不是用程序来解决这个问题,所以大量的图片要除去水印,那工作量大的吓人啊!不过可能有技术能做到这点,只是我还不知道罢了)

!所以这种加了水印的地图数

据即使被别人Down去再拼起来使用,是大大费功夫的额!至于目前主流的“数字水印”技术,这个方法还不是一个等级上的概念,对“数字水印”技术有兴趣是可以去学习下的,毕竟学海无涯啊!

虽然这个做“水印”的方法早就不是什么难点,但是对于我,通过实际学习,收获很多啊!学海当中,高人无数,只要我们时刻保持拥有一颗对学习充满热情的心,就会在学习知识的道路上获取无尽的快乐,为工作做好坚实的基础!

python标志图片_python图片加水印 - 小众知识相关推荐

  1. 图片上传(加水印、缩略图、远程保存)的简单例子

    图片上传(加水印.缩略图.远程保存)的简单例子(应用于51aspx.com) 该源码下载地址:http://51aspx.com/CV/ImageUpload 今天看到xiongeee发的文章使用使用 ...

  2. 照片如何批量加水印怎么弄?图片如何批量加水印?

    很多电商老板给图片添加水印,不仅可以更好地保护图片版权,也可以到达宣传效果.如果一张一张的添加水印耗费大量时间,而且极大影响工作效率.图片如何批量加水印(https://www.yasuola.com ...

  3. python给图片加半透明水印_Python 批量加水印就这么简单!

    工作的时候,尤其是自媒体,我们必备水印添加工具以保护我们的知识产权,网上有许多的在线/下载的水印添加工具,但他们或多或少都存在以下问题: 在线工具需要将图片上传到对方服务器,信息不安全. 很多工具不具 ...

  4. python通过qt5添加水印_Python 批量加水印就这么简单!

    工作的时候,尤其是自媒体,我们必备水印添加工具以保护我们的知识产权 ,网上有许多的在线/下载的水印添加工具,但他们或多或少都存在以下问题: 在线工具需要将图片上传到对方服务器,信息不安全. 很多工具不 ...

  5. php 上传加水印,php 图片上传加水印(自动增加水印)

    function upload($uploadfile,$watermark=1,$watertype=1,$content){ foreach($uploadfile['name'] as $key ...

  6. 图片显示时加水印(不改变原图片)

    [转]:http://adyhpq.blog.163.com/blog/ 刚刚写了一个在显示图片是加水印的程序(不改变原图片)的程序,写出来和大家分享一下,也许有的人已经早就会了 原理很简单,就是拦截 ...

  7. java ueditor 图片上传加水印_Ueditor编辑器上传图片加水印【亲测可用】-帝国CMS整合...

    Ueditor编辑器上传图片加水印 百度一下,有很多,但是方法都是一样的,写的不清不楚的.对于代码不是很了解的我们,却是头大.我整理了一下,下载下面的压缩包,解压缩之后,直接上传到  ueditor ...

  8. php 上传加水印,PHP 图片上传加水印实例

    function imageWaterMark($groundImage,$waterPos=0,$waterImage="",$waterText="",$t ...

  9. java图片加水印上传工具类_基于Spring Boot实现图片上传/加水印一把梭操作

    文章共537字,阅读大约需要 2分钟 ! 概述 很多网站的图片为了版权考虑都加有水印,尤其是那些图片类网站.自己正好最近和图片打交道比较多,因此就探索了一番基于 Spring Boot这把利器来实现从 ...

最新文章

  1. 简练软考知识点整理-控制干系人参与
  2. 【从零开始学BPM,Day2】默认表单开发
  3. CSocket类的使用
  4. 关于 Hybris (SAP Commerce Cloud)产品的客户群
  5. Linux 中的零拷贝技术
  6. Mac设置多屏幕的时候程序坞的位置
  7. windows主机的linux虚拟机中使用neovim复制、粘贴
  8. android office转pdf插件,office另存为pdf插件下载
  9. CDA-LEVEL 1 数据分析师一级经验总结
  10. 阿里云服务平台,分布式架构云平台解决方案
  11. 客户端,从服务器上下载文件流程
  12. python面向对象高级
  13. python提取内容保存excel_Python操作Excel之数据提取
  14. 抖音赚钱记,新手如何玩转抖音,每天赚300起(连载九)
  15. Mysql常用类型和字段属性
  16. docker中遇到Error response from daemon: Container 27dd9d9ed900a0f03f7c7a0f6f9babcd84290c9cfbb02b492bde2
  17. 如何用Python控制LEGO Wedo 2.0的电机
  18. 关于word粘贴图片无法显示的原因
  19. 金仓数据库KingbaseES 插件kdb_database_link
  20. 【项目总结】stm32红外循迹蓝牙超声波小车

热门文章

  1. 第6季2:基于RTSP协议的实时视频流传输的源码分析
  2. Delphi使用GDI+绘制Png图像
  3. 微信小程序实用工具——渐变色按钮(二)
  4. 华为网络工程师的考试费用和考试资格是什么?
  5. 最新阿里P7技术体系:Android程序员如何有效提升学习效率?使用指南
  6. 多卡聚合技术在消防应急可视化指挥视频传输的应用
  7. JAVA实现16进制转10进制
  8. 利用红外线接收器触发中断信号
  9. wxBot微信机器人框架
  10. Joomla模板制作教程