用Python给图片批量添加随机水印
这是之前应坛友的问题写的Python,须提前安装第三方库,安装PIL库(Pillow):在命令行中输入pip install pillow进行安装;
将此py文件放入根目录,
另外根目录中有三个文件夹。
watermark(水印文件夹)、original(需加水印图片的文件夹)、output(成品文件夹)
from PIL import Image, ImageDraw
import os, random
water_path = './watermark'#水印文件夹路径
watermark_list = os.listdir(water_path)
def do(file_name):
# 打开原始图片和水印图片
original_image = Image.open(file_name)
random_mark = random.choice(watermark_list)# 选择随机水印图片
# print(random_mark)
watermark_image = Image.open(f'{water_path}/{random_mark}')
# 将水印图片缩放到合适的大小
watermark_width, watermark_height = watermark_image.size
base_width, base_height = original_image.size
watermark_image = watermark_image.resize((base_width,int(base_width/watermark_width*watermark_height)))
# 创建一个和原始图片相同大小的空白画布
canvas = Image.new('RGBA', original_image.size)
# 将原始图片粘贴到画布上
canvas.paste(original_image, (0, 0))
# 将水印图片粘贴到画布上
canvas.paste(watermark_image, (0, 0))
# 保存带有水印的图片
name = file_name.split("\\")[-1]
canvas.save(f'./output/do_{name}')# 成品保存路径
print(f">>>>{name} 添加{random_mark}水印成功。")
for root, dirs, files in os.walk("./original"):# 需要加水印的文件夹路径
for name in files:
file_name = os.path.join(root, name)
do(file_name) xiaopo 发表于 2023-10-26 09:01
可以加文字水印吗
这是一个Python给图片添加文字水印的示例
from PIL import Image, ImageDraw, ImageFont
def add_watermark(input_image_path, output_image_path, watermark_text):
# 打开原始图片
base_image = Image.open(input_image_path).convert("RGBA")
# 创建一个可以在给定图像上绘图的对象
draw = ImageDraw.Draw(base_image)
# 设置字体和大小
font = ImageFont.truetype("arial.ttf", 15)# 水印文字的字体,大小,这是英文字体不支持中文,换成自己的字体即可
# 在图片上添加水印,设置水印位置和颜色等
draw.text((20,20), watermark_text, fill=color, font=font)
# 保存带有水印的图片
base_image.save(output_image_path)
# 使用示例
add_watermark("../img-test/orig.jpg",# 需加水印的图片
"../img-test/orig--out.png", # 最终的图片
"Watermark Text")# 水印文字 ShoreNinth 发表于 2023-10-25 23:02
我在Windows上跑了下代码,发现报错:cannot write mode RGBA as JPEG。我把第31行后面加了个png后缀:
...
这是一个给图片添加透明图片水印的例子,你看看
from PIL import Image
# 打开背景图片和水印图片
background = Image.open('../img-test/orig.jpg')# 需加水印的图片
watermark = Image.open('../img-test/mark.png').convert("RGBA")# 透明背景的水印图片
# 将水印图片粘贴到背景图片上
background.paste(watermark, (0, 0),mask=watermark)# 水印位置(0,0)
# 保存合并后的图片
background.save('../img-test/orig_mark.png') 有没有给PPT转格式为jpg,截长图,加文字水印那种代码? sai609 发表于 2023-10-25 18:14
有没有给PPT转格式为jpg,截长图,加文字水印那种代码?
这个暂时还不会 再加多个随机位置??没py打包好就方便了 sai609 发表于 2023-10-25 18:14
有没有给PPT转格式为jpg,截长图,加文字水印那种代码?
ppt导出为图片,得到N张jpg
然后再合并,类似楼主的代码,N合一即可 这个能否添加全图水印呢?比如防伪截图那种透明字 有傻瓜版么? unpy 发表于 2023-10-25 19:29
ppt导出为图片,得到N张jpg
然后再合并,类似楼主的代码,N合一即可
有相关库和代码?