吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3643|回复: 126
收起左侧

[原创工具] 批量图片水印工具

    [复制链接]
小林子Vip 发表于 2024-12-1 17:36
本帖最后由 小林子Vip 于 2024-12-2 16:05 编辑

做出这个工具的起因是帮别人省掉PS的时间,所以才有现在这个工具。发给对方后,现在打算发布到52论坛贡献自己的力量。

软件名称:批量图片水印工具
当前版本:1.0.0
软件大小:12.29mb
编程语言:python
运行环境:Windows
下载链接:https://share.weiyun.com/2R9RcOeB
杀毒引擎查杀结果:
PS:采用pyinstaller打包,存在极个别杀毒软件误报情况,本软件绝不带病毒纯属误报,若不放心请虚拟机运行。
工具开源链接:https://www.52pojie.cn/forum.php?mod=viewthread&tid=1987559
PixPin_2024-12-01_17-33-09.png 运行截图:
9467fb22-f8c4-4d75-90b8-9f15ca6e54f0.png e0601436-a9a1-40df-8529-b8d4990949de.png QQ20241201-171806.png 微信截图_20241201171748.png

免费评分

参与人数 27吾爱币 +28 热心值 +25 收起 理由
kyokusanagi2000 + 1 热心回复!
xiongyouhao + 1 + 1 我很赞同!
suishuo + 1 谢谢@Thanks!
lough_007 + 1 + 1 谢谢@Thanks!
wkiwi + 1 + 1 热心回复!
Yliiiii + 1 + 1 谢谢@Thanks!
leechjia + 1 + 1 谢谢@Thanks!
binghf + 1 我很赞同!
SenseView + 1 + 1 感谢为爱发电的大佬!
抱薪风雪雾 + 1 + 1 谢谢@Thanks!
jdhnp + 1 + 1 谢谢@Thanks!
Jerryice + 1 我很赞同!
february + 1 + 1 我很赞同!
lteng007 + 1 + 1 谢谢@Thanks!
FF91 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Milonc + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zl52 + 1 谢谢@Thanks!
pjj811885 + 1 + 1 我很赞同!
helh0275 + 1 + 1 谢谢@Thanks!
dzzZOne + 1 + 1 谢谢@Thanks!
幸富 + 1 + 1 我很赞同!
shtimi + 1 + 1 谢谢@Thanks!
manglang + 1 + 1 我很赞同!
LqS1 + 1 + 1 用心讨论,共获提升!
ty256949 + 1 + 1 谢谢@Thanks!
西岭雪 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

manglang 发表于 2024-12-1 21:09
楼主的程序强制设置了图片尺寸,可是我习惯于先裁剪后加水印,所以楼主的程序把我的图片缩小了。于是我利用星火大模型重写了代码,运行正常:

[Python] 纯文本查看 复制代码
import os
from PIL import Image, ImageEnhance
from tkinter import Tk, filedialog, Label, Entry, Button, StringVar, IntVar, messagebox

def add_watermark(input_folder, watermark_path, output_folder, position, transparency):
    watermark = Image.open(watermark_path).convert("RGBA")
    alpha = watermark.split()[3]
    alpha = ImageEnhance.Brightness(alpha).enhance(transparency / 100.0)
    watermark.putalpha(alpha)
    
    for filename in os.listdir(input_folder):
        if filename.endswith(('.png', '.jpg', '.jpeg')):
            image_path = os.path.join(input_folder, filename)
            image = Image.open(image_path).convert("RGBA")
            
            if position == "左上角":
                position = (0, 0)
            elif position == "右上角":
                position = (image.width - watermark.width, 0)
            elif position == "左下角":
                position = (0, image.height - watermark.height)
            elif position == "右下角":
                position = (image.width - watermark.width, image.height - watermark.height)
            
            image.paste(watermark, position, mask=watermark)
            output_path = os.path.join(output_folder, filename)
            image.save(output_path, 'PNG')
    
    messagebox.showinfo("完成", "所有图片已成功添加水印!")

def select_folder():
    root = Tk()
    root.withdraw()
    folder_selected = filedialog.askdirectory()
    root.destroy()
    return folder_selected

def main():
    root = Tk()
    root.title("批量添加水印")
    
    Label(root, text="输入文件夹路径:").grid(row=0, column=0)
    input_folder = StringVar()
    Entry(root, textvariable=input_folder, width=50).grid(row=0, column=1)
    Button(root, text="选择", command=lambda: input_folder.set(select_folder())).grid(row=0, column=2)
    
    Label(root, text="水印文件路径:").grid(row=1, column=0)
    watermark_path = StringVar()
    Entry(root, textvariable=watermark_path, width=50).grid(row=1, column=1)
    Button(root, text="选择", command=lambda: watermark_path.set(filedialog.askopenfilename())).grid(row=1, column=2)
    
    Label(root, text="输出文件夹路径:").grid(row=2, column=0)
    output_folder = StringVar()
    Entry(root, textvariable=output_folder, width=50).grid(row=2, column=1)
    Button(root, text="选择", command=lambda: output_folder.set(select_folder())).grid(row=2, column=2)
    
    Label(root, text="水印位置:").grid(row=3, column=0)
    position = StringVar()
    position.set("右下角")
    Entry(root, textvariable=position, width=10).grid(row=3, column=1)
    
    Label(root, text="透明度(%):").grid(row=4, column=0)
    transparency = IntVar()
    transparency.set(100)
    Entry(root, textvariable=transparency, width=10).grid(row=4, column=1)
    
    Button(root, text="开始处理", command=lambda: add_watermark(input_folder.get(), watermark_path.get(), output_folder.get(), position.get(), transparency.get())).grid(row=5, columnspan=3)
    
    root.mainloop()

if __name__ == "__main__":
    main()

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
小林子Vip + 1 + 1 用心讨论,共获提升!

查看全部评分

schtg 发表于 2024-12-2 05:53
zsj727627171 发表于 2024-12-2 07:31
52soft 发表于 2024-12-2 07:32
有源代码吗?
西岭雪 发表于 2024-12-1 17:45
感谢发布原创作品,吾爱破解论坛因你更精彩!
ty256949 发表于 2024-12-1 17:46
不错的软件,收藏了,支持原创。
hanbazhen 发表于 2024-12-1 18:14
楼主能不能加个预览效果,看效果后再导出
tutu2 发表于 2024-12-1 18:19
意义不大,现在的水印基本都得ps
jzwxc2022 发表于 2024-12-1 18:30
好东西,收藏
rl910407 发表于 2024-12-1 18:41
极个别杀毒软件误报情况,本软件绝不带病毒纯属误报,若不放心请虚拟机运行。
h96639339 发表于 2024-12-1 18:45
感谢楼主分享,已收藏
 楼主| 小林子Vip 发表于 2024-12-1 18:46
tutu2 发表于 2024-12-1 18:19
意义不大,现在的水印基本都得ps

只适合要求不高快速打水印的,要求不高的可以试试。其实python自定义比较高一点,水印的坐标啥的,源码回头开源,我再优化优化
 楼主| 小林子Vip 发表于 2024-12-1 18:47
hanbazhen 发表于 2024-12-1 18:14
楼主能不能加个预览效果,看效果后再导出

我这个是批量的,你这个单张的我在研究研究。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-23 02:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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