# The ImageChops Module

This 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.

## Functions

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).

### constant

`constant(image, value)`. Return a layer with the same size as the given image, but filled with the given pixel value.

### duplicate

`duplicate(image)`. Return a copy of the given image.

### invert

`invert(image)`. Inverts an image.

        out = MAX - image

### lighter

`lighter(image1, image2)`. Compares the two images, pixels by pixel, and returns a new image containing the lighter value for each pixel.

        out = max(image1, image2)

### darker

`darker(image1, image2)`. Compares the two images, pixels by pixel, and returns a new image containing the darker value for each pixel.

        out = min(image1, image2)

### difference

`difference(image1, image2)`. Returns the absolute value of the difference between the two images.

        out = abs(image1 - image2)

### multiply

`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

### screen

`screen(image1, image2)`. Superimposes two inverted images on top of each other.

        out = MAX - ((MAX - image1) * (MAX - image2) / MAX)

### add

`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

### subtract

`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

### blend

`blend(image1, image2, alpha)`. Same as the `blend` function in the `Image` module.

### composite

`composite(image1, image2, mask)`. Same as the `composite` function in the `Image` module.

### offset

(Deprecated) `offset(xoffset, yoffset)`. Returns a copy of the image where data have been offset by the given distances. Data wraps around the edges. If yoffset is omitted, it is assumed to be equal to xoffset.