参考链接: 在Python中编码和解码Base64字符串

问题背景

python代码打包成exe可执行文件。问题是这个python程序执行时需要显示一张图片,这就意味着打包成exe后,也需要在exe同目录下存放这张图片,你的exe才能正常执行。而且不方便的是,我们把这款exe分享给别人用的时候,除了发这个exe之外,还需要发这张图片,这…有点鸡肋。想要直接一个exe发过去就能用。 问题背景来自我的另外一篇关于tkinter的博文中显示welcome图片

解决方案

使用base64把图片编码转换为一个字符串,把字符串放在代码里,要用的时候将字符串转换为图片显示出来。

什么是Base64编码?Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。**步骤1:编码 这段代码用来生成对图片的base64编码

with open("D:\\welcome.png","rb") as f:

# 读取图片,并通过base64编码

base64_data = base64.b64encode(f.read())

# 将编码存在txt文件中

file=open('base64img.txt','wt')

file.write(str(base64_data))

file.close()

步骤2:复制编码写进我们要显示这张图片的程序里 本来是从本地读取,原来的代码是这样子的,这样子需要在本地存放图片

# 欢迎的图片显示

canvas = tk.Canvas(window, height=300, width=450)

image_file = tk.PhotoImage(file='welcome.png')

image = canvas.create_image(0, 0, anchor='nw', image=image_file)

canvas.pack(side='top')

将刚才生成并存放在base64img.txt的编码复制出来,作为字符串赋值给一个变量img_str,通过base64解码为图片,写在本地。这样即使你的本地没有这张图片,每次运行程序也会自动在本地生成这张图片,然后调用。修改后代码如下:

img_str = "这里编码太长了,我没写进来"

img_data = base64.b64decode(img_str)

with open('welcome.png', 'wb') as f:

f.write(img_data)

# 欢迎的图片显示

canvas = tk.Canvas(window, height=300, width=450)

image_file = tk.PhotoImage(file='welcome.png')

image = canvas.create_image(0, 0, anchor='nw', image=image_file)

canvas.pack(side='top')

[转载] python程序所需的图片通过base64编码成字符串放在代码中相关推荐

  1. Python实现jpg/png/jpeg图片转base64编码文件

    python实现图片转base64编码文件 #Python实现jpg/png/jpeg图片转base64编码文件 # 打开图片文件(可以是jpg/png/JPEG格式)转为二进制文件 with ope ...

  2. python验证码,python将PIL生成的图片进行base64编码并返回给前端浏览器

    我用python的PIL生成了验证码图片,需要将图片返回给前端浏览器,有两种返回方式.一种是返回response,另一种是将图片进行base64编码后返回. 注意:PIL生成验证码图片时,需要传入fo ...

  3. ajax请求去获取base64_前端将图片转换为base64位,使用ajax传递到后台,但是图片经过base64转换成字符串后非常长,无法使用ajax...

    展开全部 前端生成的代码最终格式如下: data:image/png;base64,xxxxxxxxxx........... 后端这样解码 base64=base64.Replace("d ...

  4. java svgbase64转byte_java 图片进行base64 编码解码

    java 图片进行base64 编码解码 刘振兴 代码分享 2017年06月07日 10555 2条评论 import sun.misc.BASE64Decoder; import sun.misc. ...

  5. [转载] python将图片进行base64编码, 解码

    参考链接: 在Python中编码和解码Base64字符串 一.将图片进行base64编码 import base64 img_path = 'D:xxx/file/img/juwan.jpg' wit ...

  6. python将图片导出数据库_python 将图片转换为base64编码转储进数据库

    # _*_ coding: utf-8 _*_ #中间件:拓展工具遍历文件夹,对文件夹图片进行base64编码,写入数据库,并且读取查找方法 __author__ = 'wf15038' __date ...

  7. Base64编码的字符串与图片的互转

    用Flex写了一个例子,图片(暂时仅支持png.jpg/jpeg)转成base64编码的字符串(默认取上传文件的后缀名,然后添加了"data:image/(png|gif|jpg|jpeg) ...

  8. Markdown 插入图片 基于base64编码

    流程 将图片保存在本地 将图片转码至base64编码 在文档中插入编码 markdown使用 ![toc][toc_base64][toc_base64]:https://img-blog.csdni ...

  9. 图片转换为base64编码后,实现无图片展示图片

    第一部分,将图片转换为base64编码输出为txt文本 第二部分,将转换出来的base64编码赋值给b64_code,通过base64编码转换为图片,打开,然后删除 base64编码过长,同时输入过多 ...

最新文章

  1. msdn library api调用问题
  2. ubuntu右键打开终端(Open Terminal Here)失效
  3. tracert路由检测命令使用方法
  4. ASP.NET Core SameSite 设置引起 Cookie 在 QQ 浏览器中不起作用
  5. H.264 中很有用的一些概念
  6. 良心推荐:高品质音乐播放器Audirvana for Mac
  7. 17-mysql-数据定义语言-ddl
  8. C++进阶教程之文件和流
  9. 服务器内部错误文件接收失败,您的接收电子邮件服务器报告发生内部错误.docx...
  10. python考勤系统_使用Djang的考勤系统
  11. 通过命令行安装egret引擎
  12. 科技护肤品,买还是不买
  13. 排序算法7——图解快速排序(两种主元选择方法)以及CUTOFF时间测试
  14. 航姿参考系统(AHRS)
  15. OSChina 周日乱弹 ——我对象整天在家打游戏,怎么办?
  16. 微信支付结算费率怎么降低至0.2~0.35操作方法
  17. BMW专注研发、5年累计超50亿欧元
  18. Vue3折叠面板(Collapse)
  19. linux telnet成功显示什么_一文带你彻底理解 Linux 的各种终端类型及概念
  20. 华为月薪11万招工程师,看到要求我傻眼了!

热门文章

  1. 农行运营合规管理心得体会_老员工写诗讲述农行40年运营风采
  2. 索引 2 超出范围。_重点推荐:音响灯光行业搜索引擎推广教学
  3. JavaScript文档对象模型DOM节点操作之兄弟节点(4)
  4. Python入门--文件的读写,相对路径,绝对路径
  5. 给定N个加号,M个减号以及N+M+1个整数,A1+A2+...+Am+An+1,小明想知道在所有由这n个加号,M个减号以及N+M+1个整数凑出的合法的后缀表达式中,结果最大的是哪一个?
  6. UnityShader5:基本内置变量
  7. Unity3D基础27:C#随机函数与物体销毁
  8. 2018北京ICPC D. Frog and Portal(构造)
  9. bzoj 1414 bzoj 3705: [ZJOI2009]对称的正方形(二维Hash)
  10. 边与最小割(bzoj 1797: [Ahoi2009]Mincut 最小割)