使用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,一经查实,立即删除!

相关文章

r语言descstats_一条命令轻松绘制CNS顶级配图-ggpubr

Hadley Wickham创建的可视化包ggplot2可以流畅地进行优美的可视化,但是如果要通过ggplot2定制一套图形,尤其是适用于杂志期刊等出版物的图形,对于那些没有深入了解ggplot2的人来说就有点困难了,ggplot2的部分语法是很晦涩的。为此…

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上找到答案…

python变量和常量_Python数学模块常量和示例

python变量和常量Python数学模块常量 (Python math module constants) In the math module, there are some of the defined constants that can be used for various mathematical operations, these are the mathematical constants and returns their values equivalent to …

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

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

android 对话框的父view是谁,android – 在对话框中获取相对于其父级的视图位置

我想要做的是,从按钮边缘到屏幕上的一点画一条线……我正在使用一个对话框片段…我尝试的所有函数总是返回0点…我试过以下:Overrideprotected Dialog createDialog(Bundle savedInstanceState, FragmentActivity activity){Dialog d builder.create();View v Lay…

np.radians_带有Python示例的math.radians()方法

np.radiansPython math.radians()方法 (Python math.radians() method) math.radians() method is a library method of math module, it is used to convert angle value from degree to radians, it accepts a number and returns the angle value in radians. math.radians(…

怎么用git将本地代码上传到远程服务器_git之如何把本地文件上传到远程仓库的指定位置...

2018.11.26添加内容:对于自己的仓库,我们建议将远程仓库通过clone命令把整个仓库克隆到本地的某一路径下。这样的话我们从本地向远程仓库提交代码时,就可以直接把需要提交的文件拖到我们之前克隆下来的路径下,接下来在这整个仓库下…

MathType与Origin是怎么兼容的

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

c语言 函数的参数传递示例_llround()函数以及C ++中的示例

c语言 函数的参数传递示例C llround()函数 (C llround() function) llround() function is a library function of cmath header, it is used to round the given value and casts to a long long integer, it accepts a number and returns the integer (long long int) valu…

android requestmtu,android - 如何设置/获取/请求从Android到iOS或反之亦然BLE的MTU? - 堆栈内存溢出...

我们正在将MTU请求从Android发送到iOSAndroid-从此函数onServicesDiscovered回调请求MTU但是我不知道如何确定对等设备支持是否请求了MTU,以及如何实际协商的MTU。 仅在API级别22(Android L 5.1)中添加了必需的函数:BluetoothGattCallback.onMtuChanged(…

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…

python独立log示例_带有Python示例的math.log1p()方法

python独立log示例Python math.log1p()方法 (Python math.log1p() method) math.log1p() method is a library method of math module, it is used to get the natural logarithm of 1x (base e), it accepts a number and returns the natural logarithm of 1number on base e…

15947884 oracle_Oracle Patch Bundle Update

一、相关知识介绍以前只知道有CPU(Critical Patch Update)和PSU(Patch Set Update),不知道还有个Bundle Patch,由于出现了TNS-12531的BUG问题,需要在windows上打至少为Patch bundle 22补丁。通过学习查找:Oracle里的补丁具体分为如下这样6种类型&#xf…

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

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

UVA 12501 Bulky process of bulk reduction ——(线段树成段更新)

和普通的线段树不同的是,查询x~y的话,给出的答案是第一个值的一倍加上第二个值的两倍一直到第n个值的n倍。 思路的话,就是关于query和pushup的方法。用一个新的变量sum记录一下这个区间里面按照答案给出的方式的值,比如说&#xf…

gdb ldexp_带有Python示例的math.ldexp()方法

gdb ldexpPython math.ldexp()方法 (Python math.ldexp() method) math.ldexp() method is a library method of math module, it is used to calculate expression x*(2**i), where x is a mantissa and i is an exponent. It accepts two numbers (x is either float or inte…

windows安装包删了会有影响吗_win7系统删除系统更新安装包的详细教程

win7系统使用久了,好多网友反馈说win7系统删除系统更新安装包的问题,非常不方便。有什么办法可以永久解决win7系统删除系统更新安装包的问题,面对win7系统删除系统更新安装包的图文步骤非常简单,只需要1.其实在win7旗舰版系统中&a…

解压android img文件怎么打开,解压压缩android img文件

boot.imgboot和recovery映像并不是一个完整的文件系统,它们是一种android自定义的文件格式,该格式包括了2K的文件头,后面紧跟着是用gzip压缩过的内核,再后面是一个ramdisk内存盘,ramdisk映像是一个最基础的小型文件系统…