将使用Tkinter编写的带图片的程序打包成exe文件,并且实现图片内嵌

本文介绍了如何使用Python的Pyinstaller将包含图片的Tkinter程序打包成exe,并通过将图片转为base64编码内嵌在代码中,避免了拷贝图片文件的不便和安全隐患。详细步骤包括图片转base64、内嵌到代码、运行时解码显示以及程序退出时删除临时图片的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在程序编写完成后,我使用Pyinstaller对项目进行打包,最后得出了1个exe可执行文件,但由于项目引用了一些图片,因此需要将这些图片文件和exe文件放在一起才可以正常运行文件。

这将造成很多问题如拷贝过程不方便,而且会造成安全隐患(其他使用者只需要替换图片文件即可修改内容),在查阅资料后我决定将图片内嵌。

首先,编写函数,将图片转换为base64编码格式:

import base64

def pictopy(picture_names, py_name):
    write_data = []
    for picture_name in picture_names:
        filename = picture_name.replace('.', '_')
        open_pic = open("%s" % picture_name, 'rb')
        b64str = base64.b64encode(open_pic.read())
        open_pic.close()
        write_data.append('%s = "%s"\n' % (filename, b64str.decode()))

    f = open('%s.py' % py_name, 'w+')
    for data in write_data:
        f.write(data)
    f.close()

紧接着,将这串编码写入对应的文件中:

if __name__ == '__main__':
    pics = ["fomula.png"] # fomula.png是图片名
    pictopy(pics, 'fomula') # fomula是被写入的文件名
    print("写入程序成功!")

“fomula.png”是图片的名称,而我们图片被转换后的编码将显示在fomula.py文件中,打开后是这样:

fomula_png = "iVBORw0KGgoAAAANSUhEUgAAAuYAAABrCAYAAAA7KEd8AAAgAElEQVR4nO2dTcxdVdXHr69arIrEihFrxY9qomKJBD+ColVihWhCQxrSEFITmJQB6YgRE14mjByRDsoEkxJSCWkImBgIBINCGjANCH6QqGiQCErFqCUFHPj6O7ied3M53+fcc8699/dLbu7zde9z7tlr7/3fa6+19lv+/R9mIiIiIiIyKv8z9gWIiIiIiIjCXERERERkEijMRUREREQmgMJcRERERGQCKMxFRERERCaAwlxEREREZAIozEVEREREJoDCXERERERkAijMRUREREQmgMJcRERERGQCKMxFRERERCaAwlxEREREZAIozEVEREREJsDbxr4AkWXm0KFDsz//+c+d3+eGG27o4WpkamgfMjbaoFShjUwLhblIR84999zZZZddNvZlyETRPmRstEGpQhuZDoayiHQAL8O2bdvGvgyZKNqHjI02KFVoI9NCYS4iIiIiMgEU5iIt+f3vf589n3nmmSNfiUwR7UPGRhuUKrSR6aEwF2nJiRMnsuePfexjI1+JTBHtQ8ZGG5QqtJHpYfKnrC14Ch577LEsvu5vf/tb9rP3vve9s/POO2/21a9+deSrk7H52c9+Nnv66acz+3j55Zezn334wx+effGLX5x99rOfHfnqZB3QBqWKBx54YPbss8/OXnjhhdm//vWv2dvf/vbMRr797W/P3ve+9419edIChbmsLU888UQ26X3hC1/IBjGE+tGjR2cPPvhglghT5UF48cUXMyEvq8nx48dnL7300mzXrl2ZjSCSfvSjH2U/qyOKtA/pijYoVTzyyCNZG19xxRXZnHXXXXfNnnzyycxO9u3bV/l6bWR6GMoiaw0DEqIcGNS2b9+efR3be2W8+uqrs02bNi30+mRcsAcEEfD8gQ98YMNzWYX2IX2gDUoV7PKGIylKHmojy4sec1lb8mq2smXMVuDHP/7xyte/9tprDmgrzDXXXPOG7//6179mnkqEUR20D+mKNihVzB/qw64KaCPLi8Jc5D/84he/yOLNGaQuvfTSWrF5xKXXHfxkufnpT386e/zxx2dnnXXWbPfu3bVeo31In2iDUgaLNuyDeazJYUHayPRQmMvac+ONN258XcdTLutDxPQCOylOYDI02qBUEXHl8K53vWt22mmnjXxF0gWFuaw9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
安装CTCN_MODEL_TRAIN需要进行以下步骤: 1. 首先,将需要使用图片转换为64base的编码格式,并将其存储到代码程序中。这样可以确保图片的安全性,因为代码程序是无法篡改的(反编译不考虑)\[1\]。 2. 修改配置文件(主机),可以使用vi命令编辑/etc/keepalived/keepalived.conf文件。在该文件中,可以配置一些参数,如定义接受邮件的邮箱、定义发送邮件的邮箱、定义监控nginx的脚本等\[2\]。 3. 查看服务是否正常。可以使用ip addr命令查看网络接口的配置信息,确保虚拟IP地址已经启动\[3\]。 以上是安装CTCN_MODEL_TRAIN的一般步骤,具体的安装过程可能会因环境和需求而有所不同。请根据实际情况进行相应的操作。 #### 引用[.reference_title] - *1* [将使用Tkinter编写图片程序打包exe文件并且实现图片内嵌](https://blog.csdn.net/qq_43374245/article/details/125627133)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [nginx + keepalive高可用案列](https://blog.csdn.net/jy8655790/article/details/119179162)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值