2010-07-02 121 views
2

如何创建一个python脚本,该脚本在mac上的目录中运行图像(1.jpeg-n.jpeg),并在浏览器中或通过另一个python程序显示它们?Python图像显示

我是否将文件导入python并在浏览器中显示? 我是否提取文件名称1,2,3,4,5并将其添加到列表中,我将该列表提供给另一个调用浏览器并显示的函数?

任何帮助将是伟大的。

谢谢!

回答

5

使用Tkinter和PIL用于此目的非常简单。添加muskies例如从this thread包含this example信息:

# use a Tkinter label as a panel/frame with a background image 
# note that Tkinter only reads gif and ppm images 
# use the Python Image Library (PIL) for other image formats 
# free from [url]http://www.pythonware.com/products/pil/index.htm[/url] 
# give Tkinter a namespace to avoid conflicts with PIL 
# (they both have a class named Image) 

import Tkinter as tk 
from PIL import Image, ImageTk 

root = tk.Tk() 
root.title('background image') 

# pick an image file you have .bmp .jpg .gif. .png 
# load the file and covert it to a Tkinter image object 
imageFile = "Flowers.jpg" 
image1 = ImageTk.PhotoImage(Image.open(imageFile)) 

# get the image size 
w = image1.width() 
h = image1.height() 

# position coordinates of root 'upper left corner' 
x = 0 
y = 0 

# make the root window the size of the image 
root.geometry("%dx%d+%d+%d" % (w, h, x, y)) 

# root has no image argument, so use a label as a panel 
panel1 = tk.Label(root, image=image1) 
panel1.pack(side='top', fill='both', expand='yes') 

# put a button on the image panel to test it 
button2 = tk.Button(panel1, text='button2') 
button2.pack(side='top') 

# save the panel's image from 'garbage collection' 
panel1.image = image1 

# start the event loop 
root.mainloop() 

当然,如果你比较熟悉的另一GUI,继续和适应的例子,它不应该花费太多。

+0

非常感谢!这似乎很有前途! – MacPython 2010-07-02 15:55:06

4

你首先必须找到所有的图像文件名。您可以使用os.listdir(...)获取某个目录中的所有文件,或使用​​查找与某个特定模式匹配的所有文件。

显示图像是第二个也是更具挑战性的部分。第一种选择是在外部程序中打开图像,这可以是网络浏览器。在(大多数)平台上,命令firefox 1.jpeg将在Firefox浏览器中打开图像1.jpeg。您可以使用subprocess模块来执行这些命令。如果你想用一个漂亮的GUI来展示它们,你必须使用一些框架来创建一个GUI并使用它。但是如果你是初学者,这对你来说可能有点太难。

例如:

import glob 
import subprocess 
files = glob.glob('dir/*.jpeg') 
for file in files: 
    subprocess.call(['firefox', file]) 
+0

太棒了!非常感谢!我确实希望最终通过我自己的GUI或Django显示它们。但我需要了解如何编写python代码来做到这一点,这非常有帮助! 谢谢 – MacPython 2010-07-02 14:09:39

0

这可能是一个更容易产生只是用图片比对构建显示图片的GUI的静态网页。 您可以生成一个hmtl页面,将图像放在它上面,并用新创建的html文件启动您的web浏览器。这给你一些布局的可能性。

如果你只是想在浏览器中的图片,然后muksie给了一个工作的例子。

+0

对不起,我需要使用Django,因为这需要与Python集成。 – MacPython 2010-07-02 15:36:10

1

muksie的回答已经包含非常有用的建议。如果你不想自己写HTML文件或者想要一些更漂亮的东西,你可以使用我为MDP库编写的小脚本。这基本上允许你只是这样做:

import slideshow 
slideshow.show_image_slideshow(filenames, image_size=(80,60)) 

这将创建一个HTML幻灯片,并在浏览器中打开它。你可以抓取所需的文件here(只需要templet.py和两个slideshow文件),这可能比获得完整的库更好。

+0

谢谢!也非常好!我会检查的!我最终想要实现的是一个网站,图像依次显示,每个图像下面都会有一个按钮。而更高级的选项将在一个网站上有多个图像,这些图像是可点击的,如果点击它们,则会点击其他图像。 – MacPython 2010-07-02 15:35:36