之前写过一个类似的代码,是把水印信息打散以后随机添加到原图中,并提供了水印信息的提取功能,请参考Python实现图像空域随机水印加入与提取。本文代码功能:为指定文件夹中的所有图像文件批量添加水印,水印位置在左上角、中间、右下角这三个位置中随机选择。

from random import randint

from os import listdir

from PIL import Image

#打开并读取其中的水印像素,也就是不是白色背景的像素

#读到内存中,放到字典中以供快速访问

im = Image.open('watermark.bmp')

width, height = im.size

pixels = dict()

for w in range(width):

for h in range(height):

c = im.getpixel((w,h))[:3]

if c!=(255, 255, 255):

pixels[(w, h)] = c

def addWaterMark(srcDir):

#获取当前所有BMP图像文件列表

picFiles = [fn for fn in listdir(srcDir) if fn.endswith(('.bmp', '.jpg', '.png'))]

#遍历所有文件,为每个图像添加水印

for fn in picFiles:

im1 = Image.open(fn)

w, h = im1.size

#如果图片尺寸小于水印图片,不加水印

if w

continue

#在原始图像左上角、中间或右下角添加数字水印

#具体位置根据position进行随机选择

p = {0:(0,0), 1:((w-width)//2, (h-height)//2), 2:(w-width, h-height)}

position = randint(0,2)

top, left = p.get(position, (0,0))

#修改像素值,添加水印

for p, c in pixels.items():

im1.putpixel((p[0]+top, p[1]+left), c)

#保存加入水印之后的新图像文件

im1.save(fn[:-4] + '_new' + fn[-4:])

#为当前文件夹中的图像文件添加水印

addWaterMark('.')

其中一张效果图:

python批量添加水印_Python实现批量图片添加数字水印相关推荐

  1. python数字水印_Python实现批量图片添加数字水印

    之前写过一个类似的代码,是把水印信息打散以后随机添加到原图中,并提供了水印信息的提取功能,请参考:Python实现图像空域随机水印加入与提取.本文代码功能:为指定文件夹中的所有图像文件批量添加水印,水 ...

  2. Python实现批量图片添加数字水印

    之前写过一个类似的代码,是把水印信息打散以后随机添加到原图中,并提供了水印信息的提取功能,请参考Python实现图像空域随机水印加入与提取.本文代码功能:为指定文件夹中的所有图像文件批量添加水印,水印 ...

  3. python改文件名_python实现批量修改文件名代码

    我曾以为,写脚本是很难的,直到我遇到了Python 前言随着国内版权意识的跟进,很多影视音乐资源开始收费,而且度盘又经常随意封杀各种资源,所以,为了保护资源,老司机们越来越倾向于把资源下载到本地,但随 ...

  4. python递增文件名_Python实现批量重命名

    最近在网络上下载了一部漫画,漫画是图片形式的,下载下来后才发现每一张漫画图片的文件名都是没有规律且又长又复杂的,想要把它们改成按数字递增规律的,一个一个去改文件名工作量太大,浪费太多时间,于是心想用P ...

  5. python批量添加水印_python 给目录下的图片批量加水印

    python 给目录下的图片批量加水印 water.py 放到 图片文件夹里 然后cd 到当前文件夹 python water.py #coding=utf-8 import Image import ...

  6. python批量读取图片并批量保存_Python实现批量读取图片并存入mongodb数据库的方法示例...

    本文实例讲述了Python实现批量读取图片并存入mongodb数据库的方法.分享给大家供大家参考,具体如下: 我的图片放在E:\image\中,然后使用python将图片读取然后,显示一张,存入取一张 ...

  7. python批量生成图片_python图像处理-批量生成纯色图片

    前言 本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑.如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过. 上一 ...

  8. python文件批量改名_python文件批量重命名

    python文件批量重命名 代码如下: # -*- coding: gbk -*- import os class fileRename(): def __init__(self, path): se ...

  9. python安装方法_Python如何批量更新已安装的库,为你介绍六种方法!

    众所周知,升级某个库(假设为 xxx),可以用pip install --upgrade xxx 命令,或者简写成pip install -U xxx . 如果有多个库,可以依次写在 xxx 后面,以 ...

最新文章

  1. 缓存击穿!竟然不知道怎么写代码???
  2. java stream 取某个字段_java8的函数式编程和stream使用心得
  3. QSettings allKeys读取为空分析
  4. Career Essentials from Career Service
  5. 写了本机器学习入门书
  6. Spring 核心和容器的一般更新
  7. boost asio io_context 没任务不退出
  8. 《BUG创造队》作业9:【Beta】冲刺 Scrum meeting 1
  9. Fences中关于Explorer非正常关闭问题
  10. 傅里叶分析之掐死教程(完整版)
  11. tunnelbroker_通过OPNSense上的TunnelBroker进行IPv6
  12. 模板消息php40008,企业微信发送模板消息 40008 Warning: wrong json format. ?
  13. python处理word文档中表格 添加一列_Python操作word文档插入图片和表格的实例演示...
  14. 博客园博文爬虫案例效果
  15. win10 who owns this pc? My organization I own it
  16. 安装Rstudio-server,使用官网的程序下载安装不合理?其对应的安装包是Ubuntu14,而我的系统是Ubuntu18.
  17. 精确率/召回率/准确率
  18. Python WOE的使用
  19. 搭建Nginx-rtmp流媒体服务器+使用ffmpeg推流
  20. 大数据培训课程之Flume拓扑结构大数据培训课程之Flume拓扑结构

热门文章

  1. LVS-NAT网络地址转换模式
  2. 【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)
  3. 计算机控制音响阵列,同济大学体育馆采用ATEIS的全数字DSP可指向阵列音箱
  4. ​人工智能是如何成为“智商检测器”的?
  5. python实现两个txt文件提取不同的数据
  6. 5.3运维企业部分--nginx反向代理
  7. 【PAT乙级】1028 人口普查
  8. OpenCV从入门到放弃(七):直方图那些事儿
  9. 小米市值快速上涨,因华为手机遇挫,雷军要让米粉赚一倍!
  10. Harbor配置Nginx反向代理,可以外网访问