關於tkinter中顯示圖片,因尺寸不同而無法全部顯示的解決方案


tkinter中顯示圖像,要考慮適應不同的分辨率下顯示問題。查了好多資料,封裝代碼如下。


import pyautogui
import tkinter
from PIL import Image, ImageTk
'''
思路是對一個pil_image對象進行縮放,讓它在一個矩形框內,保持比例
導入pyautogui可以忽略系統設置下的縮放功能
'''
def f1(w_, h_, png_image):
    '''
    w_ : 要適應的窗口寬
    h_ : 要適應的窗口高
    png_image : Image.open后的圖片
    '''
    w, h = png_image.size  # 獲取圖像的原始大小
    f1 = 1.0 * w_ / w
    f2 = 1.0 * h_ / h
    factor = min([f1, f2])
    width = int(w * factor)
    height = int(h * factor)
    return png_image.resize((width, height), Image.ANTIALIAS)

 # 創建窗口,必須在ImageTk.PhotoImage()之前!
root = tkinter.Tk()
root.geometry('760x1000+200+200')
# resize函數使用過程:
w_box = 760
h_box = 180
# 以一個PIL圖像對象打開  【調整待轉圖片格式】
png_image = Image.open("程序文件/f1.png")
# 縮放圖像讓它保持比例,同時限制在一個矩形框范圍內  【調用函數,返回整改后的圖片】
png_image_resized = f1(w_box, h_box, png_image)
# 把PNG圖像對象轉變為Tkinter的PhotoImage對象  【轉換格式,方便在窗口展示】
tk_image = ImageTk.PhotoImage(png_image_resized)
# ====================================================================
# 把圖像大小顯示到指定的Label
label = tkinter.Label(root, image=tk_image, width=w_box, height=h_box)
# padx,pady是圖像與窗口邊緣的距離
label.place(x=0, y=0)
root.mainloop()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM