批量加水印小软件2.0(7.5更新)

1次阅读
没有评论

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_())

正文完
 0
116博客
版权声明:本篇文章由 116博客 于2024-11-27发表,共计4062字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码