home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pypil112.zip / Scripts / thresholder.py < prev    next >
Text File  |  2001-05-03  |  2KB  |  69 lines

  1. #
  2. # The Python Imaging Library
  3. # $Id$
  4. #
  5. # this demo script illustrates how a 1-bit BitmapImage can be used
  6. # as a dynamically updated overlay
  7. #
  8.  
  9. from Tkinter import *
  10. import Image, ImageTk
  11. import sys
  12.  
  13. #
  14. # an image viewer
  15.  
  16. class UI(Frame):
  17.     def __init__(self, master, im, value = 128):
  18.         Frame.__init__(self, master)
  19.  
  20.         self.image = im
  21.         self.value = value
  22.  
  23.         self.canvas = Canvas(self, width=im.size[0], height=im.size[1])
  24.         self.backdrop = ImageTk.PhotoImage(im)
  25.         self.canvas.create_image(0, 0, image=self.backdrop, anchor=NW)
  26.         self.canvas.pack()
  27.  
  28.         scale = Scale(self, orient=HORIZONTAL, from_=0, to=255,
  29.                       resolution=1, command=self.update, length=256)
  30.         scale.set(value)
  31.         scale.bind("<ButtonRelease-1>", self.redraw)
  32.         scale.pack()
  33.  
  34.         # uncomment the following line for instant feedback (might
  35.         # be too slow on some platforms)
  36.         # self.redraw()
  37.  
  38.     def update(self, value):
  39.         self.value = eval(value)
  40.  
  41.         self.redraw()
  42.  
  43.     def redraw(self, event = None):
  44.  
  45.         # create overlay (note the explicit conversion to mode "1")
  46.         im = self.image.point(lambda v,t=self.value: v>=t, "1")
  47.         self.overlay = ImageTk.BitmapImage(im, foreground="green")
  48.  
  49.         # update canvas
  50.         self.canvas.delete("overlay")
  51.         self.canvas.create_image(0, 0, image=self.overlay, anchor=NW,
  52.                 tags="overlay")
  53.  
  54. # --------------------------------------------------------------------
  55. # main
  56.  
  57. root = Tk()
  58.  
  59. im = Image.open(sys.argv[1])
  60.  
  61. if im.mode != "L":
  62.     im = im.convert("L")
  63.  
  64. # im.thumbnail((320,200))
  65.  
  66. UI(root, im).pack()
  67.  
  68. root.mainloop()
  69.