2017-05-27 91 views
0

我目前正在嘗試使用PIL和Tkinter模塊在Python中編寫某種映射工具。到目前爲止幾乎所有的工作都很好。在ui的設置過程中,創建了一個虛擬映像(基於幾個輸入的png文件),這似乎也運行良好。但是,當試圖使用ImageTk.Photo在畫布內顯示此圖片時,顯示屏會顯示一些明顯不是圖片的內容。出於調試的原因,我通過使用PIL.Image本身的show方法輸出了我的圖片。ImageTk和PIL不能正確顯示PNG圖像

但是,顯示方法顯示和畫布顯示有什麼不同 - 我找不出解決方案,並希望得到幫助。因爲整個代碼會非常長,我不會在內部提供任何更多的內容)。首先,代碼很好(我只顯示畫布的初始化和圖片的顯示,因爲整個代碼會很長,而且不會在內部提供更多內容)。

這是畫布的初始化的代碼excert(I顯示完全地黑畫面,直到用戶加載的所有資源neccessary用於顯示圖像):

self.tileset_canvas = tkinter.Canvas(root, width=1024, height=1024) 
    self.tileset_canvas.create_line(0, 0, 80, 80) 
    self.tileset_raw_image = ImageTk.PhotoImage(PImage.new("RGB", (1024, 1024), "black")) 
    self.tileset_canvas_image = self.tileset_canvas.create_image(0, 0, image=self.tileset_raw_image) 
    self.tileset_canvas.grid(row=4, column=6, sticky=tkinter.W) 

此外內部的另一種方法我改變顯示的圖像:

 merged_img = PImage.new("RGB", (128, 512)) 
     merged_img.paste(tsp_img, (0, 0)) 
     merged_img.paste(tss_img, (0, 320)) 
     merged_img = merged_img.resize((1024, 1024)) #Double the view for a better mapping expierience 
     merged_img = merged_img.convert(mode="RGB") 
     self.tileset_raw_image = ImageTk.PhotoImage(merged_img) 
     merged_img.show() 
     self.tileset_canvas.itemconfig(self.tileset_canvas_image, image=self.tileset_raw_image) 

正如你所看到的,我也調用show方法來看看圖片的實際樣子。

這就是show方法的輸出,呼籲照片時: Output of show method

但是這是在UI中顯示: Output in the ui

回答

0

對於任何人在乎這個,似乎圖像不是正確地錨定,而是固定在畫布中間。