之前写的博客里面用到的图片都没有加水印,今天才在别的网站上发现自己的博客居然一个字不动的出现在了别人的文章里,而且还不标注出处,简直醉了。

  其实博客这种东西讲真我是很愿意让别人看得,因为自己写的也比较水,但是好歹你也标注一下原作者啊!也没有什么好的方法可以防止别人转载不注明出处,无奈,只好给图片加上个水印了。

  翻了一下博客园的设置,没找到如何在上传图片的时候自动加上水印,谷歌了一下也没有结果,这个时候就又想起了万能的python了。

  思路比较简单,先新建一张跟原图一样大小的白色图片,在上面加上水印,然后将两张图片融合就好了。

  已经添加了对不同大小图片的位置和字体自适应,结果如图:

  

代码如下:

 # -*- coding: utf-8 -*-
import sys
import os
from PIL import Image, ImageDraw, ImageFont
import time exts = ['.jpg','.jpeg','.png','.JPG','.JPEG','.PNG'] blog_name = 'christ_song'
blog_site = 'http://www.cnblogs.com/christsong/' def watermark(fname):
"""Adds a watermark to an image."""
img = Image.open(fname).convert('RGBA') #make a blank image for the text, initialized to transparent text color
img_ed = Image.new('RGBA', img.size, (255,255,255,0)) w,h = img.size
font_time_size = w // 10
font_time = ImageFont.truetype('STCAIYUN.TTF', font_time_size)#不同的电脑可能不存在这里的字体,导致最后没有输出结果;如果你的电脑上没有这几种字体,请自行修改
font_name_size = w // 15
font_name = ImageFont.truetype('STENCIL.TTF', font_name_size)
font_blog_size = w // 21
font_blog = ImageFont.truetype('STLITI.TTF', font_blog_size) date = time.strftime("%Y/%m/%d") #draw the watermark on the empty pic at a specified position
img_draw = ImageDraw.Draw(img_ed)
img_draw.text((w - font_name_size*7, h - font_blog_size - font_time_size - font_name_size), blog_name, font = font_name, fill = (255,255,255,125))
img_draw.text((w - font_time_size*5.3, h - font_blog_size - font_time_size), date, font = font_time, fill = (255,0,0,255))
img_draw.text((w - font_blog_size*13.1, h - font_blog_size), blog_site, font = font_blog, fill = (255,255,255,200)) out = Image.alpha_composite(img, img_ed)
out.save(fname)
print("saved %s as jpg" % os.path.basename(fname)) if __name__ == '__main__':
for root,dirs,files in os.walk(os.getcwd()):
for f in files:
# Check the sub directorys
fname = (root + '\\'+ f).lower()
if os.path.splitext(f)[1]:
ext = f[f.rindex('.'):]
try:
if(exts.index(ext) >= 0):
watermark(fname)
except:
pass
print("done!")

用Python给你的博客加上水印的更多相关文章

  1. 给你的博客加上“Fork me on Github”彩带

    起 如今,随着Git的大热以及Github的优越性,许多知名开源项目都将源代码托管到Github上了.在Github上不仅可以托管自己的开源项目,还可以Fork人家的源代码,给自己感兴趣的项目评价(s ...

  2. python实现文章或博客的自动摘要(附java版开源项目)

    python实现文章或博客的自动摘要(附java版开源项目) 写博客的时候,都习惯给文章加入一个简介.现在可以自动完成了!TF-IDF与余弦相似性的应用(三):自动摘要 - 阮一峰的网络日志http: ...

  3. 博客加上“Fork me on Github”彩带

    给你的博客加上“Fork me on Github”彩带 起 如今,随着Git的大热以及Github的优越性,许多知名开源项目都将源代码托管到Github上了.在Github上不仅可以托管自己的开源项 ...

  4. 给你的博客加上“Fork me on Github”彩带(转)

    给你的博客加上“Fork me on Github”彩带 https://www.cnblogs.com/Leo_wl/p/3608794.html https://github.blog/2008- ...

  5. Python课程设计 搭建博客

    安装包Github地址 Python综合设计 233博客 注意还有个email文件是需要填入自己信息的,比如最高权限账号和要发送邮件的账号密码 请安装Python2.7环境,本服务器所用环境为 设置环 ...

  6. python抓取51CTO博客的推荐博客的全部博文,对标题分词存入mongodb中

    原文地址: python抓取51CTO博客的推荐博客的全部博文,对标题分词存入mongodb中

  7. 用python爬虫监控CSDN博客阅读量

    作为一个博客新人,对自己博客的访问量也是很在意的,刚好在学python爬虫,所以正好利用一下,写一个python程序来监控博客文章访问量 效果 代码会自动爬取文章列表,并且获取标题和访问量,写入exc ...

  8. Python爬取CSDN博客文章

    0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.win ...

  9. Python 爬取CSDN博客频道

    初次接触python,写的很简单,开发工具PyCharm,python 3.4很方便 python 部分模块安装时需要其他的附属模块之类的,可以先 pip install wheel 然后可以直接下载 ...

随机推荐

  1. js(function(){alert(‘’‘)})

    function(){alert('sss')}是个匿名函数.没有名字.所以没有办法调用.在外面加个括号,就变成了一个值,值的内容是函数的引用.例如var a = (function(){" ...

  2. 【LeetCode OJ】Flatten Binary Tree to Linked List

    Problem Link: http://oj.leetcode.com/problems/flatten-binary-tree-to-linked-list/ The problem is ask ...

  3. SqlServer性能优化(一)

    一:数据存储的方式: 1.数据文件:.mdf或.ndf 2.日志文件:.ldf 二:事务日志的工作步骤: 1.数据修改由应用程序发出(在缓冲区进行缓存) 2.数据页位于缓存区缓冲中,或者读入缓冲区缓存 ...

  4. join()、implode()函数

    join() 函数 join() 函数把数组元素组合为一个字符串. join() 函数是 implode() 函数的别名. 语法 join(separator,array) 参数 描述 separat ...

  5. day14_API第四天

    1.正则(了解) 1.基本的正则表达式(看懂即可) 字符类[abc] a.b 或 c(简单类)[^abc] 任何字符,除了 a.b 或 c(否定)[a-zA-Z] a 到 z 或 A 到 Z,两头的字 ...

  6. StringMisc

    //StringMisc.java // This program demonstrates the length, charAt and getChars // methods of the Str ...

  7. 数据获取以及处理系统 --- 功能规格说明书V2.0

    产品规格说明书: 版本号: V2.0 版本说明: Version 1.0 简单得需求分析以及构思,初稿形成 Version 2.0 细化beta阶段设计,增加典型用户尝尽以及功能罗列 1. 引言 1. ...

  8. Generator 函数学习笔记

    // 使用 function* 定义一个 generator 函数 function* helloWorldGenerator() { yield 'hello'; // yield 关键字作为暂停的 ...

  9. 适配器模式(Adapter Pattern)

    将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 模式中的角色 目标接口(Target):客户所期待的接口.目标可以是具体的或 ...

  10. centos7+nginx 1.9.0+php-fpm+phpstorm+xdebug+vmware开发环境搭建

    1.php-fpm yum install php-fpm 默认配置在本地9000端口监听 service php-fpm restart启动 2.nginx 1.9.0 需先安装gcc zlib o ...