2010-07-02 12 views
2

mac의 디렉토리에서 이미지 (1.jpeg-n.jpeg)를 실행하고 브라우저 또는 다른 파이썬 프로그램을 통해 파이썬 스크립트를 표시하는 방법은 무엇입니까?파이썬 이미지 디스플레이

파일을 파이썬으로 가져오고 브라우저에 표시합니까? 파일 이름 1,2,3,4,5를 추출하여 브라우저에 표시하고 표시하는 다른 함수에 제공하는 목록에 추가합니까?

도움이 될 것입니다.

감사합니다.

답변

5

이 목적으로 Tkinter와 PIL을 사용하는 것은 꽤 쉽습니다. this example을 포함 this thread의 정보에 muskies 예를 추가

# 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

4

먼저 모든 이미지 파일 이름을 찾아야합니다. os.listdir(...)을 사용하여 특정 디렉토리의 모든 파일을 가져 오거나 glob.glob(...)을 사용하여 특정 패턴과 일치하는 모든 파일을 찾을 수 있습니다.

이미지를 보여주는 것이 두 번째로 어려운 부분입니다. 첫 번째 옵션은 외부 프로그램에서 이미지를 여는 것입니다.이 프로그램은 웹 브라우저 일 수 있습니다. (대부분의) 플랫폼에서 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 또는 장고를 통해 그들을 표시하고 싶습니다. 하지만 그렇게하기 위해 파이썬 코드를 작성하는 방법을 이해해야합니다. 그러면 많은 도움이되었습니다! 감사합니다. – MacPython

0

그냥 사진을 표시하기위한 GUI를 구축하는 것보다 사진과 함께 정적 웹 페이지를 생성하는 데 훨씬 쉬울 수 있습니다. hmtl 페이지를 생성하고 이미지를 넣은 다음 새로 만든 html 파일로 웹 브라우저를 시작할 수 있습니다. 이것은 레이아웃을위한 몇 가지 가능성을 제공합니다.

브라우저에서 그림을 원할 경우 muksie가 작동 예제를 제공했습니다.

+0

죄송합니다. 장고를 사용해야합니다. 파이썬과 통합해야하기 때문입니다. – MacPython

1

muksie 님의 답변에 이미 유용한 조언이 포함되어 있습니다. HTML 파일을 직접 쓰고 싶지 않거나 조금 애호가를 원한다면, MDP 라이브러리에 쓴 작은 스크립트를 사용할 수 있습니다. 기본적으로 다음을 수행 할 수 있습니다.

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

이렇게하면 HTML 슬라이드 쇼가 만들어지고 브라우저에서 열립니다. 필요한 파일을 모두 가져올 수 있습니다. here (templet.py 파일과 두 개의 slideshow 파일이 필요합니다.) 전체 라이브러리를 가져 오는 것보다 더 좋을 수도 있습니다.

+0

고마워요! 또한 매우 멋지다! 나는 그것을 점검 할 것이다! 궁극적으로 달성하고자하는 것은 이미지가 차례대로 표시되고 모든 이미지 아래에 다음 버튼이 표시되는 사이트입니다.그리고 고급 옵션은 한 사이트에서 클릭 할 수있는 여러 개의 이미지를 가지며 클릭하면 클릭하면 다른 이미지가 표시됩니다. – MacPython