分享一个添加时间水印的python小程序
写在前面的话:
1.本程序需要安装第三库PyQt5,Pillow
2.效果如下:
# -*- coding: utf-8 -*-
#开发人员:zhoucj
#开发时间:19-10-5 上午10:45
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox,QFileDialog,QFontDialog,QMainWindow,QDesktopWidget
from PIL import Image,ImageDraw,ImageFont
class Ui_mainWindow(QMainWindow):
# 构造方法
def __init__(self):
super(Ui_mainWindow, self).__init__()
self.setWindowFlags(QtCore.Qt.WindowCloseButtonHint) # 只显示关闭按钮
self.setupUi(self)
def setupUi(self, mainWindow):
mainWindow.setObjectName("mainWindow")
mainWindow.resize(714, 182)
self.centralwidget = QtWidgets.QWidget(mainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(110, 30, 90, 24))
font = QtGui.QFont()
font.setPointSize(12)
self.label.setFont(font)
self.label.setObjectName("label")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(200, 30, 321, 24))
self.lineEdit.setObjectName("lineEdit")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(530, 30, 80, 24))
font = QtGui.QFont()
font.setPointSize(12)
self.pushButton.setFont(font)
self.pushButton.setObjectName("pushButton")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(110, 60, 90, 24))
font = QtGui.QFont()
font.setPointSize(12)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(200, 60, 321, 24))
self.lineEdit_2.setObjectName("lineEdit_2")
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(530, 60, 80, 24))
font = QtGui.QFont()
font.setPointSize(12)
self.pushButton_2.setFont(font)
self.pushButton_2.setObjectName("pushButton_2")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(110, 90, 90, 24))
font = QtGui.QFont()
font.setPointSize(12)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_3.setGeometry(QtCore.QRect(200, 90, 281, 24))
self.lineEdit_3.setObjectName("lineEdit_3")
self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_3.setGeometry(QtCore.QRect(500, 90, 111, 24))
font = QtGui.QFont()
font.setPointSize(12)
self.pushButton_3.setFont(font)
self.pushButton_3.setObjectName("pushButton_3")
mainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(mainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 714, 30))
self.menubar.setObjectName("menubar")
mainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(mainWindow)
self.statusbar.setObjectName("statusbar")
self.statusbar.showMessage("准备就绪...")
mainWindow.setStatusBar(self.statusbar)
self.retranslateUi(mainWindow)
QtCore.QMetaObject.connectSlotsByName(mainWindow)
def retranslateUi(self, mainWindow):
_translate = QtCore.QCoreApplication.translate
mainWindow.setWindowTitle(_translate("mainWindow", "图片添加时间LOGO"))
self.label.setText(_translate("mainWindow", "选择图片:"))
self.lineEdit.setPlaceholderText(_translate("mainWindow", "例:/home/zhoucj/Desktop/123.jpg"))
self.pushButton.setText(_translate("mainWindow", "浏览"))
self.label_2.setText(_translate("mainWindow", "保存路径:"))
self.lineEdit_2.setPlaceholderText(_translate("mainWindow", "例:/home/zhoucj/Desktop"))
self.pushButton_2.setText(_translate("mainWindow", "浏览"))
self.label_3.setText(_translate("mainWindow", "输入日期:"))
self.lineEdit_3.setPlaceholderText(_translate("mainWindow", "例:2019-10-05"))
self.pushButton_3.setText(_translate("mainWindow", "确定修改"))
# 绑定选择图片的“浏览”按钮
self.pushButton.clicked.connect(self.get_old_img)
# 绑定保存图片的“浏览”按钮
self.pushButton_2.clicked.connect(self.get_new_img)
# 绑定“确定修改”按钮
self.pushButton_3.clicked.connect(self.pic_time_logo)
# 获取图片的绝对路径,包括后缀名
def get_old_img(self):
self.old_img = QFileDialog.getOpenFileName(self, "选择图片",'/home/zhoucj/OneDrive/图片')
self.old_img = self.old_img[0]
self.lineEdit.setText(self.old_img)
# 设置保存保存路径
def get_new_img(self):
self.new_img = QFileDialog.getExistingDirectory(None,"选择保存路径",'/home/zhoucj/Desktop')
self.lineEdit_2.setText(self.new_img)
def pic_time_logo(self,):
self.date = self.lineEdit_3.text()
im = Image.open(self.old_img)
drawable1 = ImageDraw.Draw(im)
# 获取图片的长和宽
im_w = im.size[0]
im_h = im.size[1]
# 设置使用的字体
font = ImageFont.truetype('/home/zhoucj/Documents/python_tool/素材/SourceHanSans-Medium.otf', int(im_h / 12)) #字体可以自己在网上下载
text_w = font.getsize(self.date)[0]
text_h = font.getsize(self.date)[1]
text_coordinate = (int(im_w - text_w - im_w / 10), int(im_h - 1.5 * text_h))
drawable1.text(text_coordinate, self.date, (255, 255, 255), font=font)
im.save(self.new_img + '/'+self.date + '(改).jpg')
self.statusbar.showMessage("修改成功...")
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
Mawindow = QtWidgets.QMainWindow() #创建窗体对象
ui = Ui_mainWindow() #创建PyQt5的窗体对象
ui.setupUi(Mawindow) #调用PyQt5窗体的方法对窗体对象进行初始化设置
Mawindow.show() #显示窗体
sys.exit(app.exec_()) #程序关闭时退出进程