Python Image Viewer
Here is Python script I quickly made for browsing through images, and with a button to pass on the filepath of the currently viewed image to another command. However, it's very limited and doesn't even resize images, maybe that and more will be fixed in a future revision.
The code:
#!/usr/bin/python from Tkinter import * from PIL import ImageTk, Image import subprocess import os.path class ImageView(Frame): def __init__(self, images, command, master=None): Frame.__init__(self, master) self.grid() self._create_widgets() self._images = images self._command = command self._offset = 0 self._browse(0) # Load first image! def _browse(self, offset): self._offset += offset if self._offset < 0: self._offset = 0 elif self._offset >= len(self._images): self._offset = (len(self._images) - 1) self.master.title("%s (%d/%d)" % (os.path.basename(self._images[self._offset]), self._offset + 1, len(self._images))) self._image_data = ImageTk.PhotoImage(Image.open(self._images[self._offset])) self._image = Button(image=self._image_data, bd=0, relief=FLAT, command=lambda: self._browse(1)) self._image.grid(column=0, row=0, columnspan=7, sticky="news") def _exec(self): subprocess.call([self._command, self._images[self._offset]]) def _create_widgets(self): self._prev_1 = Button(text="<", command=lambda: self._browse(-1)) self._prev_10 = Button(text="<<", command=lambda: self._browse(-10)) self._prev_100 = Button(text="<<<", command=lambda: self._browse(-100)) self._next_1 = Button(text=">", command=lambda: self._browse(1)) self._next_10 = Button(text=">>", command=lambda: self._browse(10)) self._next_100 = Button(text=">>>", command=lambda: self._browse(100)) self._exec = Button(text="Go!", command=self._exec) self._prev_100.grid(column=0, row=1, sticky="ew") self._prev_10.grid (column=1, row=1, sticky="ew") self._prev_1.grid (column=2, row=1, sticky="ew") self._exec.grid (column=3, row=1, sticky="ew") self._next_1.grid (column=4, row=1, sticky="ew") self._next_10.grid (column=5, row=1, sticky="ew") self._next_100.grid(column=6, row=1, sticky="ew") def image_walker(arg, dirname, names): for fname in names: path = os.path.join(dirname, fname) if path.endswith(".jpg"): arg.append(path) if __name__ == "__main__": import sys if len(sys.argv) < 3: print "Usage: %s <image directory> <command>" % (sys.argv[0]) sys.exit(1) images = list() os.path.walk(sys.argv[1], image_walker, images) if len(images) == 0: print "No images found :-(" sys.exit(1) iw = ImageView(sorted(images), sys.argv[2]) iw.master.resizable(0, 0) iw.mainloop() sys.exit(0)