吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7978|回复: 66
收起左侧

[原创工具] 批量加水印小软件2.0(7.5更新)

  [复制链接]
oddhw 发表于 2023-6-30 14:10
本帖最后由 oddhw 于 2023-7-5 15:43 编辑

pyton写的,公司要求朋友圈必须加水印,顺手写一个小软件 但是可能只适用于我单位...
发出来分享一下,后续如果有人需要可以增加功能和优化

https://wwtk.lanzoub.com/b03ehcqeh

密码:c8k1


7.5第一次更新
在PNG基础上追加jpg,jpeg,bmp格式(真的需要其他格式的水印吗...)
现在上传完的水印图片会在按钮内显示水印的预览图啦!
现在选择完图片也会显示生成了多少张图片和生成的路径,并且添加了一个小进度条

[Python] 纯文本查看 复制代码
import os
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QPushButton, QFileDialog, QGridLayout, QSizePolicy, QLabel, QProgressBar
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtCore import Qt, QSize
from PIL import Image

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("水印工具2.0")
        self.setWindowIcon(QIcon("push.ico"))

        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)
        self.layout = QGridLayout(self.central_widget)
        self.layout.setSpacing(0)

        self.watermark_path = ""
        self.image_paths = []
        self.output_folder = ""

        self.watermark_button = QPushButton("选择水印图片")
        self.watermark_button.clicked.connect(self.select_watermark)
        self.layout.addWidget(self.watermark_button, 2,0)

        self.image_button = QPushButton("选择图片")
        self.image_button.clicked.connect(self.select_images)
        self.layout.addWidget(self.image_button, 2, 1)

        self.folder_label = QLabel()
        self.layout.addWidget(self.folder_label, 3, 0)

        self.folder_button = QPushButton("选择输出文件夹")
        self.folder_button.clicked.connect(self.select_output_folder)
        self.layout.addWidget(self.folder_button, 4, 0)

        self.start_button = QPushButton("开始添加水印")
        self.start_button.clicked.connect(self.start_watermarking)
        self.layout.addWidget(self.start_button, 4, 1)

        self.progress_bar = QProgressBar()
        self.layout.addWidget(self.progress_bar, 5, 0, 1, 2)

        self.central_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.watermark_button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.image_button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.folder_button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.start_button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)

        self.central_widget.setLayout(self.layout)
        self.setMinimumSize(500, 500)
        self.show()

    def select_watermark(self):
        file_dialog = QFileDialog()
        file_dialog.setNameFilter("Image files (*.png *.jpg *.jpeg *.bmp)")
        if file_dialog.exec_():
            self.watermark_path = file_dialog.selectedFiles()[0]
            pixmap = QPixmap(self.watermark_path)
            pixmap = pixmap.scaled(self.watermark_button.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)
            scaled_path = os.path.join(os.path.dirname(self.watermark_path), "scaled_watermark.png")
            pixmap.save(scaled_path)
            scaled_path = scaled_path.replace('\\', '/')  # 将路径中的反斜杠替换为正斜杠
            self.watermark_button.setStyleSheet(f"QPushButton {{background-image: url({scaled_path}); background-position: center; background-repeat: no-repeat; background-attachment: fixed}}")

    def select_images(self):
        file_dialog = QFileDialog()
        file_dialog.setNameFilter("Image files (*.png *.jpg *.jpeg)")
        file_dialog.setFileMode(QFileDialog.ExistingFiles)
        if file_dialog.exec_():
            self.image_paths = file_dialog.selectedFiles()

            # 在按钮上显示选择的文件数量
            self.image_button.setText(f"选择图片 ({len(self.image_paths)})")

            pixmap = QPixmap(self.image_paths[0])
            pixmap = pixmap.scaled(self.image_button.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)
            pixmap.save("scaled_image.png")
            self.image_button.setStyleSheet("QPushButton {background-image: url(" + os.path.abspath("scaled_image.png") + "); background-position: center; background-repeat: no-repeat; background-attachment: fixed}")

    def select_output_folder(self):
        file_dialog = QFileDialog()
        file_dialog.setFileMode(QFileDialog.DirectoryOnly)
        if file_dialog.exec_():
            self.output_folder = file_dialog.selectedFiles()[0]
            self.folder_button.setText("输出文件夹: " + self.output_folder)

    def start_watermarking(self):
        self.progress_bar.setMaximum(len(self.image_paths))

        for index, image_path in enumerate(self.image_paths):
            image = Image.open(image_path)
            watermark = Image.open(self.watermark_path)
            watermark = watermark.resize(image.size, Image.ANTIALIAS)
            image.paste(watermark, (0,0), watermark)
            image.save(os.path.join(self.output_folder, os.path.basename(image_path)))
            self.progress_bar.setValue(index + 1)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    app.setWindowIcon(QIcon("ppush.ico"))  # 设置应用程序的图标,将显示在任务栏
    sys.exit(app.exec_())

软件界面,比较简陋,但是感觉比TK好看一丢丢

软件界面,比较简陋,但是感觉比TK好看一丢丢

免费评分

参与人数 5吾爱币 +11 热心值 +5 收起 理由
hcm3292 + 1 + 1 谢谢@Thanks!
15235109295 + 1 + 1 热心回复!
lvv15 + 1 + 1 很棒的
大大连连 + 1 + 1 谢谢@Thanks!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

ClearLover 发表于 2023-7-10 08:55
希望能支持路径加水印功能,比如一个路径为D:\0710,它里面有jpg,png等各种格式的图片,但是它们都在不同的文件夹里,比如1 6 7a s0 3921等文件夹里,这时候一个文件夹一个文件夹的去选择就会很麻烦,所以希望加上路径加水印的功能以及是否原文件名保存。
 楼主| oddhw 发表于 2023-7-5 09:26
1233594 发表于 2023-7-5 09:13
有点简单了~非常有用的东西,能添加预览就更好了了~加上水印位置和选项平铺,距离就更完美了·

预览的功能正在做,但是没想好应该怎么做,因为朋友圈一次9张,我单位就是一个水印直接加上就完事了,不需要其他的平铺旋转之类的所以就没做,这个可以加
fxd680126 发表于 2023-7-2 06:21
头像被屏蔽
大大连连 发表于 2023-7-2 08:29
提示: 作者被禁止或删除 内容自动屏蔽
山田凉粉 发表于 2023-7-2 09:18
谢谢分享
knx888 发表于 2023-7-2 09:36
确实有一定局限性,只有PNG可以加水印,无法选择更多格式的。
february 发表于 2023-7-2 09:46
操作简单,期待后续的更新,能添加更多格式和功能
awxzw 发表于 2023-7-2 20:45
简单方便。感谢分享!
mollish 发表于 2023-7-2 20:58
这个要,下载试试,希望好用
dalianlv 发表于 2023-7-2 22:15
不捡漏 挺清爽的 这种工具直观就最好啦~
fop2020 发表于 2023-7-3 12:54
感谢分享!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-12 15:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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