Image.open无法处理随机选择的图像变量Python

时间:2012-08-19 23:52:45

标签: python variables random tkinter python-imaging-library

这是我的第一个Python脚本/程序,所以我用Google搜索了所有内容并开始获得一点点。

我正在尝试制作一个程序,随机选择目录中的图片并将其显示为标签。

除了一件事,一切顺利。我已将随机图片作为变量,并尝试告诉Image.open使用变量中的路径。事实是,Image.open不会将变量识别为文件名/路径,而是将其识别为

"PIL.PngImagePlugin.PngImageFile image mode=P size=980x93 at 0xF185A8".

我已经用Google搜索了一整晚,但无法找到答案或解决方案。如果我同时打印img1-variablepath1-variable,它就会出现。

任何人都有线索如何解决这个问题?我会非常感谢任何答案! 我有Python 2.7.3

这是我的剧本(未完成)。

#! /usr/bin/env python
from Tkinter import *
import Tkinter
import random
from PIL import Image, ImageTk
import os

root = Tkinter.Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
root.geometry("%dx%d+0+0" %(w, h))
root.configure(background="darkgreen")
dir = 'decks/'
img1 = random.choice(os.listdir(dir))
path1 = dir+img1
card1 = Image.open(path1)
card1 = card1.resize((140, 190), Image.ANTIALIAS)
magicback = Image.open("datapics/magicback.jpg")
magicback = magicback.resize((140, 190), Image.ANTIALIAS)
magicbutton = ImageTk.PhotoImage(magicback)
label = Label(root, image=magicbutton)
label.image = magicbutton
label.place(x=1, y=20)
label1 = Label(root, image=card1)
label1.image = card1
label1.place(x=1, y=230)
label2 = Label(root, image=magicbutton)
label2.image = magicbutton
label2.place(x=151, y =230)
label3 = Label(root, image=magicbutton)
label3.image = magicbutton
label3.place(x=301, y=230)
label4 = Label(root, image=magicbutton)
label4.image = magicbutton
label4.place(x=451, y=230)
label5 = Label(root, image=magicbutton)
label5.image = magicbutton
label5.place(x=601, y=230)
label6 = Label(root, image=magicbutton)
label6.image = magicbutton
label6.place(x=751, y=230)
label7 = Label(root, image=magicbutton)
label7.image = magicbutton
label7.place(x=901, y=230)
root.mainloop(0)

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,那么您的问题是image.open(),我相信问题是您将目录和文件名视为字符串时将它们连接在一起:

path1 = dir + img1

相反,您应该尝试使用os.path模块将两者结合起来:

path1 = os.path.join(dir, img1)