home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pypil112.zip / PIL-1.1.2.zip / Lib / site-packages / PIL / ImageChops.py < prev    next >
Text File  |  2001-05-03  |  3KB  |  136 lines

  1. #
  2. # The Python Imaging Library.
  3. # $Id$
  4. #
  5. # standard channel operations
  6. #
  7. # History:
  8. # 1996-03-24 fl   Created
  9. # 1996-08-13 fl   Added logical operations (for "1" images)
  10. # 2000-10-12 fl   Added offset method (from Image.py)
  11. #
  12. # Copyright (c) 1997-2000 by Secret Labs AB
  13. # Copyright (c) 1996-2000 by Fredrik Lundh
  14. #
  15. # See the README file for information on usage and redistribution.
  16. #
  17.  
  18. import Image
  19.  
  20. def constant(image, value):
  21.     "Fill a channel with a given grey level"
  22.  
  23.     return Image.new("L", image.size, value)
  24.  
  25. def duplicate(image):
  26.     "Create a copy of a channel"
  27.  
  28.     return image.copy()
  29.  
  30. def invert(image):
  31.     "Invert a channel"
  32.  
  33.     image.load()
  34.     return image._new(image.im.chop_invert())
  35.  
  36. def lighter(image1, image2):
  37.     "Select the lighter pixels from each image"
  38.  
  39.     image1.load()
  40.     image2.load()
  41.     return image1._new(image1.im.chop_lighter(image2.im))
  42.  
  43. def darker(image1, image2):
  44.     "Select the darker pixels from each image"
  45.  
  46.     image1.load()
  47.     image2.load()
  48.     return image1._new(image1.im.chop_darker(image2.im))
  49.  
  50. def difference(image1, image2):
  51.     "Subtract one image from another"
  52.  
  53.     image1.load()
  54.     image2.load()
  55.     return image1._new(image1.im.chop_difference(image2.im))
  56.  
  57. def multiply(image1, image2):
  58.     "Superimpose two positive images"
  59.  
  60.     image1.load()
  61.     image2.load()
  62.     return image1._new(image1.im.chop_multiply(image2.im))
  63.  
  64. def screen(image1, image2):
  65.     "Superimpose two negative images"
  66.  
  67.     image1.load()
  68.     image2.load()
  69.     return image1._new(image1.im.chop_screen(image2.im))
  70.  
  71. def add(image1, image2, scale=1.0, offset=0):
  72.     "Add two images"
  73.  
  74.     image1.load()
  75.     image2.load()
  76.     return image1._new(image1.im.chop_add(image2.im, scale, offset))
  77.  
  78. def subtract(image1, image2, scale=1.0, offset=0):
  79.     "Subtract two images"
  80.  
  81.     image1.load()
  82.     image2.load()
  83.     return image1._new(image1.im.chop_subtract(image2.im, scale, offset))
  84.  
  85. def add_modulo(image1, image2):
  86.     "Add two images without clipping"
  87.  
  88.     image1.load()
  89.     image2.load()
  90.     return image1._new(image1.im.chop_add_modulo(image2.im))
  91.  
  92. def subtract_modulo(image1, image2):
  93.     "Subtract two images without clipping"
  94.  
  95.     image1.load()
  96.     image2.load()
  97.     return image1._new(image1.im.chop_subtract_modulo(image2.im))
  98.  
  99. def logical_and(image1, image2):
  100.     "Logical and between two images"
  101.  
  102.     image1.load()
  103.     image2.load()
  104.     return image1._new(image1.im.chop_and(image2.im))
  105.  
  106. def logical_or(image1, image2):
  107.     "Logical or between two images"
  108.  
  109.     image1.load()
  110.     image2.load()
  111.     return image1._new(image1.im.chop_or(image2.im))
  112.  
  113. def logical_xor(image1, image2):
  114.     "Logical xor between two images"
  115.  
  116.     image1.load()
  117.     image2.load()
  118.     return image1._new(image1.im.chop_xor(image2.im))
  119.  
  120. def blend(image1, image2, alpha):
  121.     "Blend two images using a constant transparency weight"
  122.  
  123.     return Image.blend(image1, image2, alpha)
  124.  
  125. def composite(image1, image2, mask):
  126.     "Create composite image by blending images using a transparency mask"
  127.  
  128.     return Image.composite(image1, image2, mask)
  129.  
  130. def offset(image, xoffset, yoffset=None):
  131.     "Offset image in horizontal and/or vertical direction"
  132.     if yoffset is None:
  133.         yoffset = xoffset
  134.     image.load()
  135.     return image._new(image.im.offset(xoffset, yoffset))
  136.