Отображение изображений Python - PullRequest
2 голосов
/ 02 июля 2010

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

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

Любая помощь будет отличной.

Спасибо!

Ответы [ 4 ]

5 голосов
/ 02 июля 2010

Использование 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()

Конечно, если вы более знакомы с другим графическим интерфейсом, продолжайте и адаптируйте пример, это не займет много времени.

4 голосов
/ 02 июля 2010

Сначала вы должны найти все имена файлов изображений.Вы можете использовать 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])
1 голос
/ 02 июля 2010

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

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

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

0 голосов
/ 02 июля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...