【Python GUI】使用pyinstaller打包成exe時可以顯示圖片的方法

 我在學習Python到GUI的使用時,嘗試在一個組件上使用了背景圖片,然而,直接Run時這個背景圖片是可以顯示出來,可當使用pyinstaller打包成exe時卻沒有打包進去顯示出來,在網上搜索多個方法測試後終於找到一個成功的方法。思路如下:

將圖片編碼成字節碼,然後直接引用字節碼再解碼成圖片顯示出來。

1. 傳入需要編碼的圖片路徑img_path,通過b64encode()方法編碼成字節碼。注意,當圖片太大時,通過print()輸出的信息可能是不完整的,直接複製這個信息會導致圖片解碼不出來,所以最好把字節碼保存到一個文件,後續需要使用圖片時就可以把文件裏面的字節碼複製到代碼中來直接引用。

2. 有了圖片的字節碼,我們就可以通過b64decode()解碼出來將圖片保存到本地,然後GUI組件引用這個路徑下的圖片就可以顯示了。注意,要先把圖片解碼出來到本地,組件才能顯示哦,順序不要搞錯了。

import base64

def encode_image(img_path: str):
    # 獲取圖片的字節碼
    with open(img_path, 'rb') as img:
        # img_data數據可能混雜其他符號或者不完整,調用時需要檢查下
        img_data = base64.b64encode(img.read())   
        print(img_data)

    # 圖片太大時,print打印出來的信息會不完整,再寫到文件中保存方便後續解碼使用
    with open('D://image_data.txt', 'wb') as f:  
        f.write(img_data)

def decode_image(img_str: str):
    # 圖片字節碼有格式要求,img_str模板:"/9j/4AAQSkZJR+kRXhpZgA=="
    # 把圖片解碼到本地,需要引用圖片的組件直接調用就可以顯示了
    with open('D://default_bg.jpg', 'wb') as img:
        img.write(base64.b64decode(img_str))

 

發佈了7 篇原創文章 · 獲贊 9 · 訪問量 3580
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章