如果项目中没有图片的话很好打包,但是如果存在图片的话就不好弄了,因为图片的是没有办法被直接打包起来的,这里用的是把图片转成base64然后在使用的时候在转成图片,直接实操。
直接上代码
import base64
def transform(picture_name):
#将图片转换问base64码
open_pic = open("%s" % picture_name, 'rb')
b64str = base64.b64encode(open_pic.read())
open_pic.close()
# 注意这边b64str一定要加上.decode()
write_data = 'img = "%s"' % b64str.decode()
f = open('%s.py' % picture_name.replace('.', '_'), 'w+')
f.write(write_data)
f.close()
if __name__ == '__main__':
pics = ["view/imgs/main.jpg",
"view/imgs/enroll.gif",
"view/imgs/IMG_8278.PNG",
"view/imgs/index.gif",
"view/imgs/money.gif",
"view/imgs/change.jpg",
"view/imgs/Exit.jpg"] # 这是7张图片
for i in pics:
transform(i)
print("ok")
运行上面的代码就会在同目录下生成对应的.py文件
生成的文件格式
def base64_to_image(base64_string):
image_data = base64.b64decode(base64_string)
image = Image.open(BytesIO(image_data))
return image
定义一个方法,在需要使用图片的地方将base64码传进来就可以了
这样之后在打包就可以正常运行了