吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2195|回复: 21
收起左侧

[Python 原创] 用Python给图片批量添加随机水印

[复制链接]
surepj 发表于 2023-10-25 17:35
这是之前应坛友的问题写的Python,
须提前安装第三方库,安装PIL库(Pillow):在命令行中输入pip install pillow进行安装;
将此py文件放入根目录,
另外根目录中有三个文件夹。
watermark(水印文件夹)、original(需加水印图片的文件夹)、output(成品文件夹)

[Python] 纯文本查看 复制代码
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)

免费评分

参与人数 2吾爱币 +8 热心值 +2 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Bob5230 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| surepj 发表于 2023-10-26 09:23
xiaopo 发表于 2023-10-26 09:01
可以加文字水印吗

这是一个Python给图片添加文字水印的示例

[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")  # 水印文字
 楼主| surepj 发表于 2023-10-26 09:05
ShoreNinth 发表于 2023-10-25 23:02
我在Windows上跑了下代码,发现报错:cannot write mode RGBA as JPEG。我把第31行后面加了个png后缀:
   ...

这是一个给图片添加透明图片水印的例子,你看看

[Python] 纯文本查看 复制代码
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')
sai609 发表于 2023-10-25 18:14
有没有给PPT转格式为jpg,截长图,加文字水印那种代码?
 楼主| surepj 发表于 2023-10-25 19:03
sai609 发表于 2023-10-25 18:14
有没有给PPT转格式为jpg,截长图,加文字水印那种代码?

这个暂时还不会
头像被屏蔽
hackerSQL 发表于 2023-10-25 19:08
提示: 作者被禁止或删除 内容自动屏蔽
SU150228 发表于 2023-10-25 19:11
再加多个随机位置??没py打包好就方便了
unpy 发表于 2023-10-25 19:29
sai609 发表于 2023-10-25 18:14
有没有给PPT转格式为jpg,截长图,加文字水印那种代码?

ppt导出为图片,得到N张jpg
然后再合并,类似楼主的代码,N合一即可
头像被屏蔽
rogabet 发表于 2023-10-25 21:00
提示: 作者被禁止或删除 内容自动屏蔽
赖哥 发表于 2023-10-25 21:14
这个能否添加全图水印呢?比如防伪截图那种透明字
gzhpsz 发表于 2023-10-25 21:20
有傻瓜版么?
sai609 发表于 2023-10-25 21:52
unpy 发表于 2023-10-25 19:29
ppt导出为图片,得到N张jpg
然后再合并,类似楼主的代码,N合一即可

有相关库和代码?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表