Basic Image Operations

Python Pillow Color Conversions

Image Manipulation

Image Filtering

Image Enhancement and Correction

Image Analysis

Advanced Topics

  • Image Module
  • Python Pillow Useful Resources

    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