使用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 FileSystemEventHandler

reload(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值