2017-05-27 90 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

对于任何人在乎这个,似乎图像不是正确地锚定,而是固定在画布中间。