千家信息网

如何用python制作中秋节贺卡

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,这篇文章将为大家详细讲解有关如何用python制作中秋节贺卡,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。导语转眼,八月十五中秋节即将到来,中秋节以月
千家信息网最后更新 2024年11月22日如何用python制作中秋节贺卡

这篇文章将为大家详细讲解有关如何用python制作中秋节贺卡,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

导语

转眼,八月十五中秋节即将到来,中秋节以月之圆兆人之团圆,

为寄托思念故乡,思念亲人之情,也是我国最具团圆意味的一个传统节日。

正文

基于pyqt5做的界面化中秋贺卡生成器。

(1)首先准备好相应的素材、如文字字体、贺卡背景等,大家可以随机制作。

(2)咳咳咳!之前有人说我文章前文太长,让我直接上代码。

class newyearCardGUI(QtWidgets.QWidget):    def __init__(self):        super(newyearCardGUI, self).__init__()        self.setFixedSize(600, 500)        self.setWindowTitle('中秋贺卡生成器-源码基地:#959755565#')        self.setWindowIcon(QIcon('icon/icon.png'))        self.grid = QGridLayout()        # 一些全局变量        self.card_image = None        self.font_size = 35        # 定义组件        # --Label        self.content_label = QLabel('内容路径:')        self.bg_label = QLabel('背景路径:')        self.font_label = QLabel('字体路径:')        self.fontcolor_label = QLabel('字体颜色:')        self.show_label = QLabel()        self.show_label.setScaledContents(True)        self.show_label.setMaximumSize(600, 300)        # --输入框        self.content_edit = QLineEdit()        self.content_edit.setText('contents/1.card')        self.bg_edit = QLineEdit()        self.bg_edit.setText('bgimages/1.png')        self.font_edit = QLineEdit()        self.font_edit.setText('fonts/font.TTF')        # --按钮        self.choose_content_button = QPushButton('选择路径')        self.choose_bg_button = QPushButton('选择路径')        self.choose_font_button = QPushButton('选择路径')        self.generate_button = QPushButton('生成贺卡')        self.save_button = QPushButton('保存贺卡')        # --下拉框        self.font_color_combobox = QComboBox()        for color in ['red', 'white', 'black', 'blue', 'yellow', 'green']:            self.font_color_combobox.addItem(color)        # 布局        self.grid.addWidget(self.show_label, 0, 0, 5, 5)        self.grid.addWidget(self.content_label, 5, 0, 1, 1)        self.grid.addWidget(self.content_edit, 5, 1, 1, 3)        self.grid.addWidget(self.choose_content_button, 5, 4, 1, 1)        self.grid.addWidget(self.bg_label, 6, 0, 1, 1)        self.grid.addWidget(self.bg_edit, 6, 1, 1, 3)        self.grid.addWidget(self.choose_bg_button, 6, 4, 1, 1)        self.grid.addWidget(self.font_label, 7, 0, 1, 1)        self.grid.addWidget(self.font_edit, 7, 1, 1, 3)        self.grid.addWidget(self.choose_font_button, 7, 4, 1, 1)        self.grid.addWidget(self.fontcolor_label, 8, 0, 1, 1)        self.grid.addWidget(self.font_color_combobox, 8, 1, 1, 1)        self.grid.addWidget(self.generate_button, 8, 3, 1, 1)        self.grid.addWidget(self.save_button, 8, 4, 1, 1)        self.setLayout(self.grid)        # 事件绑定        self.choose_content_button.clicked.connect(self.openContentFilepath)        self.choose_bg_button.clicked.connect(self.openBGFilepath)        self.choose_font_button.clicked.connect(self.openFontFilepath)        self.generate_button.clicked.connect(self.generate)        self.save_button.clicked.connect(self.save)        self.generate()

(2)生成贺卡。

 def generate(self):        # 检查路径是否存在        content_path = self.content_edit.text()        bg_path = self.bg_edit.text()        font_path = self.font_edit.text()        font_color = self.font_color_combobox.currentText()        if (not self.checkFilepath(content_path)) or (not self.checkFilepath(bg_path)) or (not self.checkFilepath(font_path)):            self.card_image = None            return False        # 写贺卡        contents = open(content_path, encoding='utf-8').read().split('\n')        font_card = ImageFont.truetype(font_path, self.font_size)        image = Image.open(bg_path).convert('RGB')        draw = ImageDraw.Draw(image)        draw.text((180, 30), contents[0], font=font_card, fill=font_color)        for idx, content in enumerate(contents[1: -1]):            draw.text((220, 40+(idx+1)*40), content, font=font_card, fill=font_color)        draw.text((180, 40+(idx+2)*40+10), contents[-1], font=font_card, fill=font_color)        # 显示        fp = io.BytesIO()        image.save(fp, 'BMP')        qtimg = QtGui.QImage()        qtimg.loadFromData(fp.getvalue(), 'BMP')        qtimg_pixmap = QtGui.QPixmap.fromImage(qtimg)        self.show_label.setPixmap(qtimg_pixmap)        self.card_image = image

(3)素材都是准备的多份,背景文字选取路径自己设置。

def openContentFilepath(self):        filepath = QFileDialog.getOpenFileName(self, "请选取贺卡内容文件", '.')        self.content_edit.setText(filepath[0])     def openBGFilepath(self):        filepath = QFileDialog.getOpenFileName(self, "请选取贺卡背景图片", '.')        self.bg_edit.setText(filepath[0])     def openFontFilepath(self):        filepath = QFileDialog.getOpenFileName(self, "请选取字体文件", '.')        self.font_edit.setText(filepath[0])

(4)生成的贺卡保存下来。

 def save(self):        filename = QFileDialog.getSaveFileName(self, '保存', './card.jpg', '所有文件(*)')        if filename[0] != '' and self.card_image:            self.card_image.save(filename[0])            QDialog().show()

好啦, 一张完整的贺卡显示就出来啦如下:

附完整代码:

'''Function:    生成中秋祝福贺卡csdn账号:顾木子吖'''import osimport ioimport sysfrom PyQt5.QtGui import QIconfrom PyQt5.QtWidgets import *from PyQt5 import QtWidgets, QtGuifrom PIL import Image, ImageDraw, ImageFont  '''生成中秋祝福贺卡'''class newyearCardGUI(QtWidgets.QWidget):    def __init__(self):        super(newyearCardGUI, self).__init__()        self.setFixedSize(600, 500)        self.setWindowTitle('中秋贺卡生成器-源码基地:#959755565#')        self.setWindowIcon(QIcon('icon/icon.png'))        self.grid = QGridLayout()        # 一些全局变量        self.card_image = None        self.font_size = 35        # 定义组件        # --Label        self.content_label = QLabel('内容路径:')        self.bg_label = QLabel('背景路径:')        self.font_label = QLabel('字体路径:')        self.fontcolor_label = QLabel('字体颜色:')        self.show_label = QLabel()        self.show_label.setScaledContents(True)        self.show_label.setMaximumSize(600, 300)        # --输入框        self.content_edit = QLineEdit()        self.content_edit.setText('contents/1.card')        self.bg_edit = QLineEdit()        self.bg_edit.setText('bgimages/1.png')        self.font_edit = QLineEdit()        self.font_edit.setText('fonts/font.TTF')        # --按钮        self.choose_content_button = QPushButton('选择路径')        self.choose_bg_button = QPushButton('选择路径')        self.choose_font_button = QPushButton('选择路径')        self.generate_button = QPushButton('生成贺卡')        self.save_button = QPushButton('保存贺卡')        # --下拉框        self.font_color_combobox = QComboBox()        for color in ['red', 'white', 'black', 'blue', 'yellow', 'green']:            self.font_color_combobox.addItem(color)        # 布局        self.grid.addWidget(self.show_label, 0, 0, 5, 5)        self.grid.addWidget(self.content_label, 5, 0, 1, 1)        self.grid.addWidget(self.content_edit, 5, 1, 1, 3)        self.grid.addWidget(self.choose_content_button, 5, 4, 1, 1)        self.grid.addWidget(self.bg_label, 6, 0, 1, 1)        self.grid.addWidget(self.bg_edit, 6, 1, 1, 3)        self.grid.addWidget(self.choose_bg_button, 6, 4, 1, 1)        self.grid.addWidget(self.font_label, 7, 0, 1, 1)        self.grid.addWidget(self.font_edit, 7, 1, 1, 3)        self.grid.addWidget(self.choose_font_button, 7, 4, 1, 1)        self.grid.addWidget(self.fontcolor_label, 8, 0, 1, 1)        self.grid.addWidget(self.font_color_combobox, 8, 1, 1, 1)        self.grid.addWidget(self.generate_button, 8, 3, 1, 1)        self.grid.addWidget(self.save_button, 8, 4, 1, 1)        self.setLayout(self.grid)        # 事件绑定        self.choose_content_button.clicked.connect(self.openContentFilepath)        self.choose_bg_button.clicked.connect(self.openBGFilepath)        self.choose_font_button.clicked.connect(self.openFontFilepath)        self.generate_button.clicked.connect(self.generate)        self.save_button.clicked.connect(self.save)        self.generate()    '''生成贺卡'''    def generate(self):        # 检查路径是否存在        content_path = self.content_edit.text()        bg_path = self.bg_edit.text()        font_path = self.font_edit.text()        font_color = self.font_color_combobox.currentText()        if (not self.checkFilepath(content_path)) or (not self.checkFilepath(bg_path)) or (not self.checkFilepath(font_path)):            self.card_image = None            return False        # 写贺卡        contents = open(content_path, encoding='utf-8').read().split('\n')        font_card = ImageFont.truetype(font_path, self.font_size)        image = Image.open(bg_path).convert('RGB')        draw = ImageDraw.Draw(image)        draw.text((180, 30), contents[0], font=font_card, fill=font_color)        for idx, content in enumerate(contents[1: -1]):            draw.text((220, 40+(idx+1)*40), content, font=font_card, fill=font_color)        draw.text((180, 40+(idx+2)*40+10), contents[-1], font=font_card, fill=font_color)        # 显示        fp = io.BytesIO()        image.save(fp, 'BMP')        qtimg = QtGui.QImage()        qtimg.loadFromData(fp.getvalue(), 'BMP')        qtimg_pixmap = QtGui.QPixmap.fromImage(qtimg)        self.show_label.setPixmap(qtimg_pixmap)        self.card_image = image    '''打开贺卡内容文件'''    def openContentFilepath(self):        filepath = QFileDialog.getOpenFileName(self, "请选取贺卡内容文件", '.')        self.content_edit.setText(filepath[0])    '''打开贺卡背景图片文件'''    def openBGFilepath(self):        filepath = QFileDialog.getOpenFileName(self, "请选取贺卡背景图片", '.')        self.bg_edit.setText(filepath[0])    '''打开字体路径'''    def openFontFilepath(self):        filepath = QFileDialog.getOpenFileName(self, "请选取字体文件", '.')        self.font_edit.setText(filepath[0])    '''保存贺卡'''    def save(self):        filename = QFileDialog.getSaveFileName(self, '保存', './card.jpg', '所有文件(*)')        if filename[0] != '' and self.card_image:            self.card_image.save(filename[0])            QDialog().show()    '''检查文件是否存在'''    def checkFilepath(self, filepath):        if not filepath:            return False        return os.path.isfile(filepath)  '''run'''if __name__ == '__main__':    app = QApplication(sys.argv)    gui = newyearCardGUI()    gui.show()    sys.exit(app.exec_())

好啦!中秋贺卡生成器就制作完成啦,制作不易,中秋快落~

关于如何用python制作中秋节贺卡就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

贺卡 路径 生成 文件 字体 内容 背景 选择 制作 中秋贺卡 生成器 图片 文章 背景图片 检查 事件 代码 全局 变量 基地 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 国家实行网络安全保扩 软件开发费用记入什么科目 服务器文件被加密 云诚通讯服务器 网络安全和运维开发一样吗 aop实现数据库 对于网络安全的重要性有什么认识 贵州展招网络技术有限公司 宿州工程管理软件开发需要多少钱 池州政府软件开发 我的世界神奇宝贝服务器QQ群号 网络安全事件调查处理 毕设数据库表太多了怎么写论文 wow 选择服务器 网络安全工程师自学看什么书 服务器硬件教程 珠海一手楼盘销售软件开发 我的世界服务器收管理 上海互联网软件开发值得推荐 衢州网络安全准入控制价格 商丘网络安全工程师报考 网络安全的基本特征有相对性 安司源服务器端破解 数据库主键怎么使用查阅向导 近年来的网络安全漏洞 党委要加强网络安全 数据库触发器修改学生姓名 分布式网络技术公司 东业网络技术有限公司 开源流媒体服务器系统
0