簡體   English   中英

使用PIL顯示圖像而不添加文件格式

[英]displaying an image without adding the file format using PIL

我編寫了一個可以搜索文件夾並在新窗口中顯示圖片的功能(如果文件存在),但是在該功能正常運行之前,我總是必須添加圖像文件格式或擴展名。

有沒有辦法可以解決忽略.gif.png等擴展名的問題

from tkinter import *
from PIL import *

def display_pix():
    hmm   = Toplevel(window)
    hmm.geometry('300x300')
    label = Label(hmm,)
    label.pack()

    PhotoImage(        file = 'C:\\Python34\\' + e.get())
    logo = PhotoImage( file = 'C:\\Python34\\' + e.get()) 
    label.img = logo
    label.config(image = label.img)

 window = Tk()
 e = Entry(  window, width= 20)
 b = Button( window, text = 'search',command = display_pix)
 e.place(x = 50, y = 30)
 b.place(x = 70, y = 50)

 window.mainloop()

如果文件名為spam.gif ,那就是其文件名,因此您不能僅將其打開為spam (是的,Windows資源管理器會嘗試向您隱藏此內容,但僅限於有限的程度,並且,如果您要執行相同的操作,則必須執行Windows資源管理器的相同操作。)

如果希望用戶能夠輸入spam ,並且要讓程序自動打開spam.gifspam.jpgspam.png ,則需要明確查找與所需模式匹配的文件。 而且,您還必須決定如果找到兩個這樣的文件,或者根本不是圖像的名為spam.txt的文件,該怎么辦?

最簡單的版本(嘗試打開第一個spam.* )是這樣的:

def open_image_file(path, name):
    for fullname in os.listdir(path):
        if fnmatch.fnmatch(f, name + '.*'):
            return PhotoImage(file=os.path.join(path, fullname))

現在您可以執行以下操作:

logo = open_image_file(r'C:\Python34', e.get())

(如果未找到名為spam.*文件,則最終將顯示為None 。如果找到了文本文件或可執行文件,並且PhotoImage引發了異常, PhotoImage引發異常。否則, logo將為第一個spam.*文件的PhotoImage 。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM