2013-07-17 74 views
1

好了,所以我目前正在寫一個簡單的圖像瀏覽器,我有足夠的代碼能夠查看這些圖片,但唯一的問題是,查看您所需要的圖片。您必須將它們放在與腳本相同的目錄中並重命名它們。我希望用戶能夠點擊文件打開之類的東西,然後導入這些圖像。我目前使用Tkinter作爲我的Gui和PIL來顯示圖像。這裏是我的最新代碼:導入圖像到Tkinter的

from PIL import Image, ImageTk 
from Tkinter import Tk, Label, BOTH 
from ttk import Frame, Style 
import os 
import PIL 
import Tkinter 

filename = "test.jpg" 
filename2 = "test1.jpg" 
filename3 = "test2.jpg" 
filename4 = "test3.jpg" 
basewidth = 300 
img = Image.open(filename) 
wpercent = (basewidth/float(img.size[0])) 
hsize = int((float(img.size[1]) * float(wpercent))) 
img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS) 
img.save('resize.jpg') 

basewidth = 300 
img = Image.open(filename2) 
wpercent = (basewidth/float(img.size[0])) 
hsize = int((float(img.size[1]) * float(wpercent))) 
img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS) 
img.save('resize2.jpg') 

basewidth = 300 
img = Image.open(filename4) 
wpercent = (basewidth/float(img.size[0])) 
hsize = int((float(img.size[1]) * float(wpercent))) 
img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS) 
img.save('resize4.jpg') 
class Example(Frame): 



    def __init__(self, parent): 
      Frame.__init__(self, parent) 

      self.parent = parent 

      self.initUI() 

    def initUI(self): 

      self.parent.title("Picture") 
      self.pack(fill=BOTH, expand=1) 

      Style().configure("TFrame", background="") 

      image1 = Image.open("resize.jpg") 
      bardejov = ImageTk.PhotoImage(image1) 
      label1 = Label(self, image=bardejov) 
      label1.image = bardejov 
      label1.place(x=5, y=5) 

      image2 = Image.open("resize2.jpg") 
      bardejov = ImageTk.PhotoImage(image2) 
      label1 = Label(self, image=bardejov) 
      label1.image = bardejov 
      label1.place(x=5, y=250) 

      image3 = Image.open("resize3.jpg") 
      bardejov = ImageTk.PhotoImage(image3) 
      label1 = Label(self, image=bardejov) 
      label1.image = bardejov 
      label1.place(x= 350, y=5) 

      image3 = Image.open("resize4.jpg") 
      bardejov = ImageTk.PhotoImage(image3) 
      label1 = Label(self, image=bardejov) 
      label1.image = bardejov 
      label1.place(x= 350, y=250) 

def main(): 

    root = Tk() 
    root.geometry("660x488") 
    app = Example(root) 
    root.mainloop() 

if __name__ == '__main__': 
    main() 
+0

你對這個問題有什麼不瞭解?你知道Tkinter有內置的文件對話框嗎?或者,你知道嗎,但不知道如何使用它?或者還有什麼你不瞭解的嗎? –

+0

我知道Tkinter的有一個內置的文件對話框,香港專業教育學院花了一整天來fiqure出來,但我fianlly了死衚衕,並張貼在這裏我需要有人來告訴我如何我想補充一個文件對話框中定義的所有IMG的=在這裏打開文件對話框。然後我只是不知道如何打開它。 –

回答

1

在這裏你去 - 我的一個圖像做,你對於所有其他做類似

在評論

你的問題後

import tkFileDialog 
from Tkinter import * 
from PIL import Image 
import os 

root= Tk() 

def resizeIt(): 
    filename = tkFileDialog.askopenfilename() 
    basewidth = 300 
    img = Image.open(filename) 
    wpercent = (basewidth/float(img.size[0])) 
    hsize = int((float(img.size[1]) * float(wpercent))) 
    img = img.resize((basewidth, hsize), Image.ANTIALIAS) 
    img.save('resize.jpg') 
    os.remove(filename) # deletes the original image after you have got the resized image 


Button(text='add image', command=resizeIt).pack() 

root.mainloop() 

編輯是你可以使用os模塊刪除文件。首先在當前名稱空間中輸入import os,然後在保存調整大小的圖像後,添加一行os.remove(filename)。 我已經在上面的代碼中完成了。

+0

什麼奇怪的是後你會在選擇,你必須點擊X來打開它如何添加一個文本,告訴用戶這樣做,或做u有感謝的方式,通過修復四象 –

+0

,你只能選擇一個圖像在一個對話框中。從文件對話框中選擇單個圖像,然後單擊「打開」。而已。您將在同一地點的名稱resize.jpg您保存這個python腳本 – oat

+0

做我必須有四次按鈕,因爲我有它重複四次,但所有的高清rezimg下,然後有按鈕(獲得的圖像ect)一次 –