Python Pillow - ImageChops.add_modulo() Function



The PIL.ImageChops.add_modulo function is used to add two images without clipping the result. Instead of clipping values that exceed the maximum (MAX) limit like the add() function, this add modulo operation wraps around, similar to modulo arithmetic.

The following formula gives the mathematical representation of this operation −

$$\mathrm{out\:=\:((image1\:+\:image2)\%\:MAX}$$

Unlike the ImageChops.add() function this operation is reversible, meaning that the original pixel values can be reconstructed from the result.

Syntax

Following is the syntax of the function −

PIL.ImageChops.add_modulo(image1, image2)

Parameters

Here are the details of this function parameters −

  • image1 − This is the first input image to add to another image.

  • image2 − This is the second input image to add to the first image.

Return Value

This Function returns the Image object.

Examples

Example 1

In this example, two random RGB images (image1 and image2) are created using NumPy arrays. Then the ImageChops.add_modulo() function is applied to see how the pixel values of the two images are represented in the output image after performing the modulo addition operation.

from PIL import Image, ImageChops
import numpy as np

# Create two random RGB images
image1 = Image.fromarray(np.array([(235, 64, 3), (255, 0, 0), (255, 255, 0), (255, 255, 255), (164, 0, 3)]), mode="RGB")
print("Pixel values of image1 at (0, 0):", image1.getpixel((0, 0)))

image2 = Image.fromarray(np.array([(255, 14, 3), (25, 222, 0), (255, 155, 0), (255, 55, 100), (180, 0, 78)]), mode="RGB")
print("Pixel values of image2 at (0, 0):", image2.getpixel((0, 0)))

# Add the two images without clipping the result
result = ImageChops.add_modulo(image1, image2)
print("Pixel values of the result at (0, 0) after add_modulo:", result.getpixel((0, 0)))

Output

Pixel values of image1 at (0, 0): (235, 0, 0)
Pixel values of image2 at (0, 0): (255, 0, 0)
Pixel values of the result at (0, 0) after add_modulo: (234, 0, 0)

Example 2

In this example, the ImageChops.add_modulo() function is used on two JPEG image files to add the images without clipping the result.

from PIL import Image, ImageChops

# Open two image files
image1 = Image.open('Images/TP logo.jpg')
image2 = Image.open('Images/pillow-logo-S.jpg')

# Add the two images without clipping the result
result = ImageChops.add_modulo(image1, image2)

# Display the input and resulting images
image1.show()
image2.show()
result.show()

Output

Input Image 1

tp logo

Input Image 2

pillow logo S

Output Image

imagechops add modulo

Example 3

Here is an example that uses the ImageChops.add_modulo() function on two PNG image files to add the images without clipping the result.

from PIL import Image, ImageChops

# Open two image files
image1 = Image.open('Images/ColorDots.png')
image2 = Image.open('Images/pillow-w.png')

# Add the two images without clipping the result
result = ImageChops.add_modulo(image1, image2)

# Display the input and resulting images
image1.show()
image2.show()
result.show()

Output

Input Image 1

color dots

Input Image 2

pillow w

Output Image

chops add modulo
python_pillow_function_reference.htm
Advertisements