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

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

大家好,欢迎来到IT知识分享网。python数字水印_Python实现批量图片添加数字水印

之前写过一个类似的代码,是把水印信息打散以后随机添加到原图中,并提供了水印信息的提取功能,请参考: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(‘.’)

其中一张效果图:

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11205.html

(0)
上一篇 2024-03-24 21:15
下一篇 2024-03-25 08:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信