Tutorial :Python images display



Question:

How can I create a python script that runs through the images (1.jpeg-n.jpeg) in a directory on a mac and displays them in a browser OR via another python program?

Do I import a file to python and than display in browser? Do I extract the file names 1,2,3,4,5 and add that to a list, which I give to another function that calls a browser and displays?

Any help would be great.

Thanks!


Solution:1

Using Tkinter and PIL for this purpose is pretty trivial. Add muskies example to the information from this thread that contains 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()  

Of course if you're more familiar with another GUI, go ahead and adapt the example, it shouldn't take much.


Solution:2

You first have to find all image filenames. You can use os.listdir(...) to get all files in a certain directory, or glob.glob(...) to find all files matching a certain pattern.

Showing the images is the second and more challenging part of this. The first option is to open the images in an external program, this can be a web browser. On (most) platforms a command firefox 1.jpeg will open the image 1.jpeg in the Firefox browser. You can use the subprocess module to execute such commands. If you want to show them using a nice GUI, you have to create a GUI using some framework and use this. But if you are a beginner this might be a little bit too difficult for you.

For example:

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


Solution:3

muksie's answer already contains very useful advice. If don't want to write the HTML file yourself or want something a little fancier you could use a small script I wrote for the MDP library. This basically allows you to just do:

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

This will create an HTML slideshow and open it in your browser. You can grab just the needed files here (only templet.py and the two slideshow files are needed), which might be better for you than getting the full library.


Solution:4

It might be a lot easier to just generate a static web page with pictures than building a GUI for displaying pictures. You can just generate a hmtl page, put the images on it and start your web browser with the newly created html file. this gives you some possibilities for layout as well.

If you just want a picture in the browser then muksie gave a working example.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »