The ImageChops module contains a number of arithmetical image operations, called channel operations (“chops”). These can be used for various purposes, including special effects, image compositions, algorithmic painting, and more.
For more pre-made operations, see ImageOps.
At this time, most channel operations are only implemented for 8-bit images (e.g. “L” and “RGB”).
Most channel operations take one or two image arguments and returns a new image. Unless otherwise noted, the result of a channel operation is always clipped to the range 0 to MAX (which is 255 for all modes supported by the operations in this module).
ImageChops.constant(image, value)¶Return a layer with the same size as the given image, but filled with the given pixel value.
ImageChops.duplicate(image)¶Return a copy of the given image.
ImageChops.invert(image)¶Inverts an image.
out = MAX - image
ImageChops.lighter(image1, image2)¶Compares the two images, pixel by pixel, and returns a new image containing the lighter values.
out = max(image1, image2)
ImageChops.darker(image1, image2)¶Compares the two images, pixel by pixel, and returns a new image containing the darker values.
out = min(image1, image2)
ImageChops.difference(image1, image2)¶Returns the absolute value of the difference between the two images.
out = abs(image1 - image2)
ImageChops.multiply(image1, image2)¶Superimposes two images on top of each other. If you multiply an image with a solid black image, the result is black. If you multiply with a solid white image, the image is unaffected.
out = image1 * image2 / MAX
ImageChops.screen(image1, image2)¶Superimposes two inverted images on top of each other.
out = MAX - ((MAX - image1) * (MAX - image2) / MAX)
ImageChops.add(image1, image2, scale, offset)¶Adds two images, dividing the result by scale and adding the offset. If omitted, scale defaults to 1.0, and offset to 0.0.
out = (image1 + image2) / scale + offset
ImageChops.subtract(image1, image2, scale, offset)¶Subtracts two images, dividing the result by scale and adding the offset. If omitted, scale defaults to 1.0, and offset to 0.0.
out = (image1 - image2) / scale + offset
ImageChops.blend(image1, image2, alpha)¶Same as the Image.blend() function in the Image module.
ImageChops.composite(image1, image2, mask)¶Same as the Image.composite() function in the Image module.
ImageChops.offset(image, xoffset, yoffset)¶ImageChops.offset(image, offset)Returns a copy of the image where data has been offset by the given distances. Data wraps around the edges. If yoffset is omitted, it is assumed to be equal to xoffset.