文章目录

一、为什么要为图片添加水印

二、利用Python为图片添加水印

遍历文件夹下所有图片文件

三、利用QT for Python制作图片水印添加程序

一、为什么要为图片添加水印

在互联网写文章最头疼的一件事情就是发表的文章容易被抄袭,各种抄袭的手段真的是层出不穷。无奈,只能在不影响阅读体验的情况下不断地提高反抄袭的难度。虽然防不住,但是为文章中的图片添加水印,至少能够保证文章被抄袭之后,读者还能知道文章的来源网站。

在部分情况下,我们可以利用一些软件比如FastStone,快速截取一个带有水印的图片,如下图所示:

image

这样的工具可以快速地为图片添加上水印图像。

但是如果我们有一批的图片,其并不是通过截图生成,这种情况下如果要对每一个图片添加水印,FastStone工具就有点无能为力了。

我们可以使用市面上的一些软件来实现:

image

但是这些软件,要么不免费,要么免费但是不安全,要么太繁琐。

索性,我们就用Python来完成一个图片水印批量添加程序的开发。

Python学习交流群:835017344,这里是python学习者聚集地,有大牛答疑,有资源共享!有想学习python编程的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。

二、利用Python为图片添加水印

图片添加图片水印的原理其实很简单,在一个空白的画布上依次将原图像和水印添加添加进去即可。

在Python中,我们可以借助PIL模块轻松地实现图片水印的添加。

下面,我们通过代码来演示一下。

遍历文件夹下所有图片文件

首先我们需要获取一个目录下的所有文件,提取出其中的图像文件,这一步通过内置的os模块即可实现,代码如下所示:

import os

img_suffix_list = ['png', 'jpg', 'bmp']

for i in os.listdir(r"C:\Users\yang9\Desktop"):

if i.split('.')[-1] in img_suffix_list:

print(i)

运行上述代码,我们将获取选定目录下后缀名为png、jpg、bmp的图形文件,其效果如下图所示:

image

为图片添加图片水印

下面这一步,我们为图片添加图片水印。这一步需要借助的PIL的Image类来实现。

首先,读取原始图片和水印图片,并获取原始图片的大小,代码如下所示:

img = Image.open(img_file)  # 打开图片

watermark = Image.open(wm_file) # 打开水印

img_size = img.size

然后我们新建一个图层,其大小为原始图片的大小,并将水印图片添加到图层上:

wm_position = (img_size[0]-wm_size[0],img_size[1]-wm_size[1]) # 默认设定水印位置为右下角

layer = Image.new('RGBA', img.size) # 新建一个图层

layer.paste(watermark, wm_position) # 将水印图片添加到图层上

接着,我们对图层和原始图片进行合成:

mark_img = Image.composite(layer, img, layer)

最后,调用save方法,将新图片保存到本地:

mark_img.save(save_path + new_file_name)

这样,一个添加了水印的图片就生成了。

我们将其整合为两个函数,方便调用,代码如下所示:

# coding:utf-8

@文件: code_run.py

@创建者:州的先生

博客地址:zmister.com

import os,traceback

from PIL import Image

获取文件夹图片

def get_folder(fpath,wm_file,save_path):

try:

img_suffix_list = ['png', 'jpg', 'bmp']

for i in os.listdir(fpath):

if i.split('.')[-1] in img_suffix_list:

img_path = fpath + '/' + i

img_water_mark(img_file=img_path,wm_file=wm_file,save_path=save_path)

except Exception as e:

print(traceback.print_exc())

图片添加水印

def img_water_mark(img_file, wm_file,save_path):

try:

img = Image.open(img_file) # 打开图片

watermark = Image.open(wm_file) # 打开水印

img_size = img.size

wm_size = watermark.size

# 如果图片大小小于水印大小

if img_size[0] < wm_size[0]:

watermark.resize(tuple(map(lambda x: int(x * 0.5), watermark.size)))

print('图片大小:', img_size)

wm_position = (img_size[0]-wm_size[0],img_size[1]-wm_size[1]) # 默认设定水印位置为右下角

layer = Image.new('RGBA', img.size) # 新建一个图层

layer.paste(watermark, wm_position) # 将水印图片添加到图层上

mark_img = Image.composite(layer, img, layer)

new_file_name = '/new_'+img_file.split('/')[-1]

mark_img.save(save_path + new_file_name)

except Exception as e:

print(traceback.print_exc())

这样,我们通过一个函数get_folder(),指定图片的目录,水印图片的位置以及新图片保存的位置就可以了。运行代码,其效果如下动图所示:

image

去保存的目录看看具体的效果,都准确地添加了图片水印:

image

三、利用QT for Python制作图片水印添加程序

代码写好了之后,我们就可以很方便地借助其进行批量添加图片水印的操作了。虽然很方便,但是如果能够有一个图形用户界面的客户端程序供我们使用,那就更加好了。

在下一篇文章中,我们将介绍借助Python的PyQt5/PySide2,将批量添加图片水印的功能封装成一个桌面客户端程序。其效果如下动图所示:

image

python给图片添加水印图片_使用Python编写批量添加图片水印程序相关推荐

  1. python图片水印软件_使用Python编写批量添加图片水印程序:一、代码方案

    一.为什么要为图片添加水印 在互联网写文章最头疼的一件事情就是发表的文章容易被抄袭,各种抄袭的手段真的是层出不穷.无奈,只能在不影响阅读体验的情况下不断地提高反抄袭的难度.虽然防不住,但是为文章中的图 ...

  2. Python图片相册批处理器的设计与实现批量添加图片水印、批量命名等功能

    课题研究使用Python语言开发一个包含批量添加图片水印.批量命名等功能的图片批处理程序,功能模块大概包含以下模块: (1)首页模块:首页是整个软件的初始页面,包含用户登录.注册.关于本软件等功能,用 ...

  3. python添加图片水印_python 批量添加图片水印

    python程序,用来批量添加图片水印.输入一个文件夹.水印位置(左下角.底部中间.右下角).用户名(用户名是中文的),批量给文件夹里所有的jpg和png图片在指定位置添加水印. 水印内容是:用户名 ...

  4. 如何给图片批量添加专属水印

    现在越来越多的人喜欢在社交平台分享自己的照片,为了防止我们所发的照片被他人盗用,我们可以给照片添加上专属的水印.那么问题又来了,如果需要给大量图片添加统一的专属水印,也就是批量添加,否则一张一张图片添 ...

  5. 如何批量添加图片到ppt的方法

    如何批量添加图片到ppt 许多时候会做一些幻灯片,需要大量的图片,但是往往一张以张的加图片,会很浪费时间,如何快速添加图片,一次解决呢? 步骤:插入-相册-点击相册 点击文件,批量选择你要插入的图片, ...

  6. freemaker生成word模板的各种坑,包含word打不开、批量添加图片、图片变形等问题总结

    最近在使用freemaker做一个word模板,里面包含大量表格.截图.超链接等数据.历时一周多,遇到很多坑,现在想想都后怕,现在简单总结一下,希望给以后的小伙伴提供帮助,少走弯路! 坑一:word打 ...

  7. Java实现一行代码生成二维码,可传输到前端展示,可自定义二维码样式,可设置图片格式,可对二维码添加图片,可对二维码添加文字,可以设置二维码大小、字体大小、字体颜色、边框颜色、边框大小等等

    Java实现一行代码生成二维码,可传输到前端展示,可自定义二维码样式,可设置图片格式,可对二维码添加图片,可对二维码添加文字,可以设置二维码大小.字体大小.字体颜色.边框颜色.边框大小等等. 0.准备 ...

  8. python邮件图片加密软件_用Python发一封图文并茂的邮件

    最近使用了不少通讯工具的接口, 比如企业微信机器人,钉钉,微信公众号的接口(未认证的订阅公众号),相对于邮件来说,它们的表现形式太弱.比如没有更丰富的版本方式.当然了,并不是说表现形式越棒就是约好的通 ...

  9. excel图片变成代码_没错, Python杀死了Excel

    在大家的印象里,想进入金融行业或者数据岗位,首先需要精通Excel.然而野村证券副首席数字官马修·汉普森在上周五的伦敦Quant Conference上发表讲话:"现在走进交易大厅,用Exc ...

最新文章

  1. 最新版IntelliJ IDEA 15开发Java Maven项目
  2. bzoj 3224 普通平衡树 vactor的妙用
  3. 改工作空间_打拼六年换的新房,装修花了17万,飘窗改柜子很实用,谁见过?...
  4. Cloud Studio全文搜索功能介绍
  5. BZOJ 1221: [HNOI2001] 软件开发(最小费用最大流)
  6. c语言5个学生3门成绩写入文件,(5) 输入N个学生的姓名和3门课的成绩,统计每个学生的平均成绩后,将结果输出到文件studen...
  7. matplotlib图表介绍
  8. 黑盒测试概念简述,黑盒测试优缺点、黑盒用例设计方法简单介绍及黑盒测试方法使用总结
  9. Python对象引用和del删除引用
  10. ajax success重复,ajax中success函数中的事件会叠加吗?
  11. zoj 3228 覆盖及非覆盖串的多次匹配
  12. idea中springBoot项目修改html之类的文件后服务不自动更新
  13. php数组用递归函数求和,如何用php递归函进行数字累加操作?php递归函数累加求和...
  14. android 开发者模式 手机变慢,手机太卡?手机中的“开发者模式”你会用吗?试一下,瞬间流畅!...
  15. 大学 University 2
  16. ES压测工具(四):esrally实例操作
  17. Dubbo2.6.5入门——简单的HelloWorld
  18. 【Linux Centos6/7 Oracle11g 内存16G调整32G】
  19. 剑网3指尖江湖开局门派选TA最好 叉叉助手伴你快意江湖
  20. html中去除浮漂有什么作用,浮漂有动作,但总是锚鱼该怎么办?只需4招,保证帮你解决问题...

热门文章

  1. Volley 图片加载相关源码解析
  2. oracle discoverer 10g手册 下载,Discoverer Desktop安装手册
  3. Realtek 8125驱动分析第二篇——触发硬件中断
  4. Quartus 器件库的添加方法
  5. onkeydown 与 onkeypress 的区别
  6. 日语中接续词和接续助词的区别
  7. Javaweb基础知识点,邮储银行Java笔试
  8. 鸿蒙榜第一名是谁,赵本山86名徒弟收入天差地别,宋小宝仅排名第二,第一名红透半边天...
  9. 肠道菌群对药物,重金属,污染物,膳食化合物的代谢和健康效应
  10. Selenium 3.x如何启动3种浏览器(Chrome/Firefox/IE)