努力在Tkinter中调整图像大小

时间:2015-10-26 09:40:48

标签: python python-3.x tkinter python-imaging-library

我为我的Sixth Form Computing课程开发了一个基于控制台的冒险游戏,现在想将它迁移到Tkinter。主要原因是我可以使用图片,主要来自game-icons.net

到目前为止一切都那么好,但是图像质量很高,以至于当我显示它们时它们看起来很大。这是一个例子:

Problem with image size

代码通过使用for循环来迭代当前区域(玩家所在的)项目列表。这是代码:

if len(itemKeys) > 0:
    l = Label(lookWindow, text="Looking around, you see the following items....\n").pack()
    for x in range(0, len(itemKeys)):
        icon = PhotoImage(file=("icons\\" + itemKeys[x] + ".png"))
        l = Label(lookWindow, image=icon)
        l.photo = icon
        l.pack()
        l = Label(lookWindow, text=("" + itemKeys[x].title())).pack()
        l = Label(lookWindow, text=("   " + locations[position][2][itemKeys[x]][0] + "\n")).pack()

else:
    l = Label(lookWindow, text="There's nothing at this location....").pack()

("icons\\" + itemKeys[x] + ".png")的部分只是进入游戏目录中的icons文件夹并将文件名串起来,在这种情况下会产生“key.png”,因为我们的项目是目前正在关注的是关键。

然而,现在,我想调整图像大小。我尝试过使用PIL(人们说它已被弃用,但我设法安装得很好?)但到目前为止还没有运气。

任何帮助表示赞赏。 杰克

编辑: 这个问题已被标记为重复,但我已经tried to use it了,但回答的人似乎打开了一个文件,将其保存为“.ppm”(?)文件,然后显示它,但是当我尝试得到一个巨大的错误,说我无法显示“PIL.Image.Image”。

编辑2: 改为:

im_temp = PILImage.open(("icons\\" + itemKeys[x] + ".png")).resize((250,250), PILImage.ANTIALIAS)
photo = PhotoImage(file=im_temp)
label = Label(lookWindow, image=photo)
label.photo = photo
label.pack()

现在得到这个:

edit 2

2 个答案:

答案 0 :(得分:1)

您可以在使用应用程序对其进行补贴之前对其进行预处理,而不是动态调整这些巨大的图像。我拿了'钥匙'和'锁定胸部'图像并将它们放在'icons'子目录中,然后运行这段代码:

from PIL import Image
import glob

for infn in glob.glob("icons/*.png"):
    if "-small" in infn: continue
    outfn = infn.replace(".png", "-small.png")
    im = Image.open(infn)
    im.thumbnail((50, 50))
    im.save(outfn)

它创建了一个'key-small.png'和'locked-chest-small.png',您可以在应用程序中使用它而不是原始图像。

答案 1 :(得分:0)

对于python 2,您可以执行类似的操作,在进行少量导入后,它也应适用于python 3

NSHttpCookie[] cookieStoreData = NSHttpCookieStorage.SharedStorage.Cookies;