Python图像显示
如何创建一个python脚本,该脚本在mac上的目录中运行图像(1.jpeg-n.jpeg),并在浏览器中或通过另一个python程序显示它们?Python图像显示
我是否将文件导入python并在浏览器中显示? 我是否提取文件名称1,2,3,4,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,继续和适应的例子,它不应该花费太多。
你首先必须找到所有的图像文件名。您可以使用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])
太棒了!非常感谢!我确实希望最终通过我自己的GUI或Django显示它们。但我需要了解如何编写python代码来做到这一点,这非常有帮助! 谢谢 – MacPython 2010-07-02 14:09:39
这可能是一个更容易产生只是用图片比对构建显示图片的GUI的静态网页。 您可以生成一个hmtl页面,将图像放在它上面,并用新创建的html文件启动您的web浏览器。这给你一些布局的可能性。
如果你只是想在浏览器中的图片,然后muksie给了一个工作的例子。
对不起,我需要使用Django,因为这需要与Python集成。 – MacPython 2010-07-02 15:36:10
muksie的回答已经包含非常有用的建议。如果你不想自己写HTML文件或者想要一些更漂亮的东西,你可以使用我为MDP库编写的小脚本。这基本上允许你只是这样做:
import slideshow
slideshow.show_image_slideshow(filenames, image_size=(80,60))
这将创建一个HTML幻灯片,并在浏览器中打开它。你可以抓取所需的文件here(只需要templet.py
和两个slideshow
文件),这可能比获得完整的库更好。
谢谢!也非常好!我会检查的!我最终想要实现的是一个网站,图像依次显示,每个图像下面都会有一个按钮。而更高级的选项将在一个网站上有多个图像,这些图像是可点击的,如果点击它们,则会点击其他图像。 – MacPython 2010-07-02 15:35:36
非常感谢!这似乎很有前途! – MacPython 2010-07-02 15:55:06