Как я могу создать скрипт Python, который запускает изображения (1.jpeg-n.jpeg) в каталоге на Mac и отображает их в браузере ИЛИ через другую программу на Python?

Импортировать ли файл в python, а затем отобразить в браузере? Должен ли я извлечь имена файлов 1,2,3,4,5 и добавить их в список, который я даю другой функции, которая вызывает браузер и отображает?

Любая помощь была бы велика.

Благодарность!

2
MacPython 2 Июл 2010 в 17:44

4 ответа

Лучший ответ

Использование Tkinter и PIL для этой цели довольно тривиально. Добавьте пример мускуса к информации из этой темы, содержащей этот пример:

# 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, продолжайте и адаптируйте пример, это не должно занять много.

5
Wayne Werner 2 Июл 2010 в 15:35

Сначала вы должны найти все имена файлов изображений. Вы можете использовать os.listdir(...), чтобы получить все файлы в определенном каталоге, или glob.glob(...), чтобы найти все файлы, соответствующие определенному шаблону.

Показ изображений является второй и более сложной частью этого. Первый вариант - открыть изображения во внешней программе, это может быть веб-браузер. На (большинстве) платформ команда firefox 1.jpeg откроет изображение 1.jpeg в браузере Firefox. Вы можете использовать модуль subprocess для выполнения таких команд. Если вы хотите показать их с помощью приятного графического интерфейса, вы должны создать графический интерфейс с использованием некоторого фреймворка и использовать его. Но если вы новичок, это может быть слишком сложно для вас.

Например:

import glob
import subprocess
files = glob.glob('dir/*.jpeg')
for file in files:
    subprocess.call(['firefox', file])
4
muksie 2 Июл 2010 в 13:56

Ответ Мукси уже содержит очень полезный совет. Если вы не хотите писать HTML-файл самостоятельно или хотите что-то более изощренное, вы можете использовать небольшой скрипт, который я написал для Библиотека MDP. Это в основном позволяет вам просто сделать:

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

Это создаст слайд-шоу в формате HTML и откроет его в вашем браузере. Вы можете получить только необходимые файлы здесь (нужны только templet.py и два файла slideshow), что может быть лучше, чем получить полная библиотека.

1
nikow 2 Июл 2010 в 14:42

Возможно, будет гораздо проще просто создать статическую веб-страницу с изображениями, чем создавать графический интерфейс для отображения изображений. Вы можете просто сгенерировать hmtl-страницу, поместить на нее изображения и запустить свой веб-браузер с вновь созданным html-файлом. это дает вам некоторые возможности для макета.

Если вам просто нужна картинка в браузере, то Muksie привел рабочий пример.

0
Mattias Nilsson 2 Июл 2010 в 14:33