发现pyinstaller在打包图片到exe程序时,无法将图片封装到exe中去,执行程序是会跳出失败提示,无法找到图片文件。以下提供解决方案:
1,首先对图片文件进行编码转换,转换成py文件。
- import base64
- def handle_gif_to_py(picture_name):
- open_gif = open(“%s.gif”%picture_name, ‘rb’)
- b64str = base64.b64encode(open_gif.read())
- open_gif.close()
- write_data = ‘img = “%s”‘% b64str.decode()
- f = open(‘%s.py’ % picture_name, ‘w+’)
- f.write(write_data)
- f.close()
- if __name__==’__main__‘:
- picture = [‘splash’]
- for picture_position in picture:
- handle_gif_to_py(picture_position)
命名为pictures.py。注意,在调试阶段,需要先执行此函数,生成 splash.py,后续处理函数才可以导入 splash。你可以打开 splash.py 文件看看,里面只有一句话,img=”XXX”.我们用的时候就是导入 img ,解码生成图片再供 exe 函数调用。
2,在工程文件中导入生成的 py 文件。
- import base64
- from splash import img as splash
- ……
- tmp = open(‘tmp.gif’, ‘wb+’)
- tmp.write(base64.b64decode(splash))
- tmp.close()
- gif = wx.Image(“tmp.gif”).ConvertToBitmap()
在这里 tmp.write(base64.b64decode(splash)) 就是解码生成图片,后面就是正常调用图片了。
每次执行 exe 都会自动生成一个 tmp.gif 临时图片文件供 exe 程序调用。