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

简介: 1,关于文章被爬说起来挺桑心的,好不容易写的文章,被爬走。 用个搜索引擎搜索都不是在第一位,写的文章全给这些网站提供流量了。 这种网站还居多广告。 还是抱怨少点吧。csdn对于这些事情也是无所作为啊。 最起码的防盗链也不加上,图片直接用csdn的。网易,qq在 上个世纪就加上防盗链了。csdn也是土豪啊,这公益事业做的!!!真叫好。 举例: 之前

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

目录
相关文章
|
21天前
|
存储 算法 API
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
141 82
|
13天前
|
存储 API 数据安全/隐私保护
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
52 6
|
5月前
|
Python
Python实用记录(六):如何打开txt文档并删除指定绝对路径下图片
这篇文章介绍了如何使用Python打开txt文档,删除文档中指定路径的图片,并提供了一段示例代码来展示这一过程。
57 1
|
5月前
|
计算机视觉 Python
Python实用记录(一):如何将不同类型视频按关键帧提取并保存图片,实现图片裁剪功能
这篇文章介绍了如何使用Python和OpenCV库从不同格式的视频文件中按关键帧提取图片,并展示了图片裁剪的方法。
154 0
|
4月前
|
JSON Linux 数据格式
Python模块:从入门到精通,只需一篇文章!
Python中的模块是将相关代码组织在一起的单元,便于重用和维护。模块可以是Python文件或C/C++扩展,Python标准库中包含大量模块,如os、sys、time等,用于执行各种任务。定义模块只需创建.py文件并编写代码,导入模块使用import语句。此外,Python还支持自定义模块和包,以及虚拟环境来管理项目依赖。
Python模块:从入门到精通,只需一篇文章!
|
4月前
|
测试技术 开发者 Python
对于Python中的异常要如何处理,raise关键字你真的了解吗?一篇文章带你从头了解
`raise`关键字在Python中用于显式引发异常,允许开发者在检测到错误条件时中断程序流程,并通过异常处理机制(如try-except块)接管控制。`raise`后可跟异常类型、异常对象及错误信息,适用于验证输入、处理错误、自定义异常、重新引发异常及测试等场景。例如,`raise ValueError("Invalid input")`用于验证输入数据,若不符合预期则引发异常,确保数据准确并提供清晰错误信息。此外,通过自定义异常类,可以针对特定错误情况提供更具体的信息,增强代码的健壮性和可维护性。
|
5月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
232 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
5月前
|
Python
Python实用记录(四):os模块-去后缀或者改后缀/指定目录下图片或者子目录图片写入txt/csv
本文介绍了如何使用Python的os模块来操作文件,包括更改文件后缀、分割文件路径和后缀、将指定目录下的所有图片写入txt文档,以及将指定目录下所有子目录中的图片写入csv文档,并为每个子目录分配一个标签。
62 1
|
5月前
|
编解码 UED Python
Python批量修改指定目录下图片的大小名文章
Python批量修改指定目录下图片的大小名文章
36 1
|
5月前
|
iOS开发 MacOS Python
Python编程小案例—利用flask查询本机IP归属并输出网页图片
Python编程小案例—利用flask查询本机IP归属并输出网页图片
54 1

热门文章

最新文章