使用python 对图片进行水印,保护自己写的文章

1,关于文章被爬


说起来挺桑心的,好不容易写的文章,被爬走。
用个搜索引擎搜索都不是在第一位,写的文章全给这些网站提供流量了。
这种网站还居多广告。
还是抱怨少点吧。csdn对于这些事情也是无所作为啊。
最起码的防盗链也不加上,图片直接用csdn的。

网易,qq在 上个世纪就加上防盗链了。

csdn也是土豪啊,这公益事业做的!!!真叫好。
举例:
之前写第一个rancher文章:
原文章:
http://blog.csdn.net/freewebsys/article/details/51154388
被抓取的文章:
http://www.bkjia.com/Linux/1124575.html
直接将我的顶部和底部的声明,和我的博主地址删除了。
我还故意没有放到最后一行,也被删除了。
这个有意思。估计是弄了一个正则的库,遇见连接直接给删除了。
这次来个NB的,我直接在图片里面加上我的博主地址。
看看他们咋处理。

2,python处理图片


首先我的电脑是mac,其他系统也是一样的。
用的最多的是qq截屏生成的图片。
监控qq截屏目录,使用watchdog。
项目地址:
https://github.com/gorakhargosh/watchdog
安装:

pip install watchdog

3,macos 下面安装PIL


mac安装之前必须安装freetype。需要引入中文字体,否则乱码。

brew install libpng                                                                                    
brew install freetype
#安装之后需要把freeType的include文件做个软连接。保证能访问到。
sudo ln -s /usr/local/Cellar/freetype/2.5.3_1/include/freetype2 /usr/include/freetype                               

官方网站:(python imaging library)
http://www.pythonware.com/products/pil/
由于没有windows的版本,直接使用源代码安装。最后更新的时间是2009年。

#解压缩 
tar -zxvf Imaging-1.1.7.tar.gz
cd Imaging-1.1.7
python setup.py build
python setup.py install

安装完之后就可以使用了。
安装到了目录/Library/Python/2.7/site-packages/PIL 下面。

4,编写python代码


代码实现主要功能:
增加对qq截屏文件夹的监听,然后生成新的文件之后立刻对图像进行增加水印。
效果如下:


干的漂亮,但是有几个问题,字体只能是19号,再小了就乱了。
源代码如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-################import sys
import time
import logging
#设置日志格式.
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandlerreload(sys)
charset = "utf-8"
sys.setdefaultencoding(charset)
import Image
import ImageDraw
import ImageFont#增加水印.直接写入文件.
def watermask(qq_screencapture_file):print(qq_screencapture_file)#写入两行文件.sign_text1 = u'版权声明:本文为博主原创,未经允许不得转载。'sign_text2 = u'博主地址:http://blog.csdn.net/freewebsys'#字体必须大于等于19才可以输出汉字,过小可能该库渲染不起来,具体原因不清楚。font = ImageFont.truetype('simhei.ttf',19)img = Image.open(qq_screencapture_file)#获得图片长和宽,将文字写到最底下.width,height = img.size#img = Image.new("RGBA",(300,200),(0,0,0))draw = ImageDraw.Draw(img)#draw.text( (0,50), u'你好,世界!', font=font)# draw.text( (0,50), unicode(txt,'UTF-8'))draw.text((20,height-50),sign_text1,fill='#ff0000', font=font)draw.text((20,height-30),sign_text2,fill='#ff0000', font=font)del draw#正好qq图片是png的.img.save(qq_screencapture_file, "PNG")print("finish.")#增加监控Handler类.
class MyEventHandler(FileSystemEventHandler):#其他还有别的,只保留创建函数.(其他还有on_moved,on_deleted,on_modified等.def on_created(self, event):what = 'directory' if event.is_directory else 'file'#logging.info("Created %s: %s", what, event.src_path)#对图像进行处理,增加水印.watermask(event.src_path)if __name__ == "__main__":path = "your_qq_ScreenCapture_dir"#增加 handler事件类.event_handler = MyEventHandler()#一些是官方写法.不做修改.observer = Observer()observer.schedule(event_handler, path, recursive=True)observer.start()try:while True:time.sleep(1)except KeyboardInterrupt:observer.stop()observer.join()

最后注意下字体文件,需要放到当前目录下面。
从网上搜索一个字体文件就行。我使用的是黑体的。

5,总结


自己的文章还是很辛苦的写的呢。
花不少时间的劳动成果不想被他人就这么窃取。
但是还想继续写博客,这个好习惯我也会继续坚持下去的。
增加水印的这个办法超级棒,并且自己设计水印。
还是程序员厉害。
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/51800163 未经博主允许不得转载。
@ http://blog.csdn.net/freewebsys

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android layout_width 属性,android:layout_weight属性详解

在android开发中LinearLayout很常用,LinearLayout的内控件的android:layout_weight在某些场景显得非常重要,比如我们需要按比例显示。android并没用提供table这样的控件,虽然有TableLayout,但是它并非是我们想象中的像html里面的t…

angular的$http发送post,get请求无法传送参数的问题

2019独角兽企业重金招聘Python工程师标准>>> 用$http进行异步请求的时候发现了一个奇怪的事情,用$http.post(url,data)的方法进行请求,后台死活接收不到data的参数,真是百思不得姐啊..... 折腾了老半天才在stackoverflow上找到答案…

怎样解决Word文档图标无法正常显示的问题?

此类问题是由于 Word 程序相关组件损坏导致,可以通过下面的方案来解决:步骤/方法按键盘上的 Windows 徽标健 R 键,输入 regedit,按回车键。(若弹出用户账户控制窗口,请允许以继续)对于 Word 200…

MathType与Origin是怎么兼容的

MathType作为一款常用的公式编辑器,可以与很多的软件兼容使用。Origin虽然是一款专业绘图与数据分析软件,但是在使用过程中也是可以用到MathType。它可以帮助Origin给图表加上标签,或者在表格中增加公式标签。但是一些用户朋友对这个不能不是…

AutoBookmark Adobe Acrobat快速自动批量添加书签/目录

前言 解决问题:Adobe Acrobat快速自动批量添加书签/目录, 彻底告别手动添加书签的烦恼 AutoBookmark 前言1 功能简介2 实现步骤2.1 下载插件2.2 将插件复制到Acrobat文件夹下2.3 自动生成书签 1 功能简介 我们在查看PDF版本的论文或者其他文件的时候, 虽然相比较于…

Python调用微博API获取微博内容

一:获取app-key 和 app-secret 使用自己的微博账号登录微博开放平台(http://open.weibo.com/),在微博开放中心下“创建应用”创建一个应用,应用信息那些随便填,填写完毕后,不需要提交审核,需要的只是那个ap…

鸿蒙系统hdc,HDC2020有看头:要揭开鸿蒙系统和EMUI11神秘面纱?

IFA2020算是HDC2020的预热吧,一个是9月2日在德国柏林举办的消费电子展,一个是在松山湖举办的华为开发者大会,二者的目的都一样,但也有一丝不同,IFA是为了让老外了解HMS、了解华为的智慧生态,而HDC2020就是要…

Java String 学习笔记 (一)

2019独角兽企业重金招聘Python工程师标准>>> ###String 简介 String 并非java的8大基本数据类型之一。 java中基本数据类型存储在栈内存中。而String不是,新new的String 对象存储在堆内存中。而字符串存储在常量池中。String对象的引用存储中栈内存中。 …

note2 android4.3,玩家们动手吧 Note2安卓4.3固件已泄漏

【PConline 资讯】最近各个牌子的安卓机迎来了升级安卓4.3的大潮,现在三星Galaxy Note2的安卓4.3固件已经泄漏出来了。实际上,此前三星官方已经确认,Galaxy Note3可以获得官方的安卓4.3固件升级,但具体日期没有确定,只…

【JUnit 报错】 method initializationerror not found:JUnit4单元测试报错问题

今天是用JUnit测试一段代码,报错method initializationerror not found::出现如下问题: 双击这个就显示出现如下的错误: 查询网上,说是junit版本的问题: 那我就不使用JUnit这个Libernary了,下载…

将byte数组以html形式输出到页面,java 数组显示到html

java 数组显示到html[2021-02-05 01:08:54] 简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐:…

windows 下 git 禁用 CRLF 转换 LF

2019独角兽企业重金招聘Python工程师标准>>> windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时出现提示,解决办法: 删除根目录 .git 文件夹禁用自动转换 > git config --global core.autocrl…

使用gulp构建前端(三)

为什么80%的码农都做不了架构师?>>> 使用gulp构建前端(三) 紧接着上述文章内容,开始新的插件的使用 插件三 gulp-clean-css,作用减小文件大小,并给引用url添加版本号避免缓存,一个需…

网站html标签如何优化,网站HTML标签优化教程

真正需要SEOer掌握并经常使用的HTML标签也就那么几个,本小节丈哥seo带来的是页面HTML标签优化。title标签 – 标题标签1)title标签用法网站SEOHTML标签优化教程 – 丈哥seo2)标题标签的作用关于网站标题写法与操作技巧有许多,需要怎么优化标题的朋友可以…

html 轮播图的鼠标事件,这是图片轮播的代码 html+css,怎么加上鼠标悬停移出继续功能?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼.one {position: absolute;width: 500px;height: 400px;overflow: hidden;}.one_cantent img {width: 500px;height: 300px;float: left;}.one_cantent {width: 2500px;height: 400px;position: absolute;left: 0px;animation-name…

微软Azure云之企业Exchange 2016部署12—配置负载平衡

上几节我们把Exchange2016邮箱系统配置完毕了,本节我们来配置开通需要对外的端口,并对这些端口进行负载均衡配置,如下图红框所示:1.Exchange服务端口Exchange2016需要对外开通以下的端口,来对外提供不同的服务&#xf…

centos下升级jdk版本

2019独角兽企业重金招聘Python工程师标准>>> 由于安装的centos系统,自带了jdk1.6和1.7的版本,介于在平时开发,用了1.8.为了保持开发环境的一致,故此需要升级,放办maven打包等工具的使用。 查看系统的jdk版本…

语言之输出png图片_什么是PPML?如何输出PPML文档?

什么是PPML?PPML是由PODi联盟的几个会员公司共同开发出一种个性化印刷标识语言,这是一种全新的、基于XML(可扩展标识语言)技术的印刷行业标准语言,得到越来越多的业内人士关注。PPML采用XML作为句法基础,使PPML其他很多…

TCP/IP协议网络模型

1.tcp/ip分层模型 tcp/ip把网络结构分为四层,从上到下依次为:应用层、传输层、互联网层、网络接口层。每层担任不同的职责,下层服务于上层,最终上层就是用户使用的层。分层结构如图1所示。 图1 tcp/ip分层模型 (1)应用层 向用户提…

oracle 增量_【干货分享】DMETL中的增量抽取初识

DMETL实现了增量数据的同步。在源表上进行的增删改操作,可以通过增量数据抽取,同步到目的表中。在第一次将源表数据全量抽取到目的表中后,可以通过重复地执行增量数据抽取,将源表上的增删改操作产生的变化数据,无遗漏地…