Last modified: Oct 19, 2024 By Alexander Williams

Working with Image Formats and Conversion using Python Pillow

Pillow provides comprehensive support for working with different image formats, such as JPEG, PNG, and BMP, and offers simple methods for converting images from one format to another. This makes it an essential tool for image processing tasks. In this article, we'll explore how to handle various image formats and perform conversions using Python Pillow.

Getting Started with Pillow

If you're new to the Pillow library, check out our guide on Pillow: Installation and getting started (Python) to ensure you have everything set up before proceeding.

Loading and Identifying Image Formats

To work with images, you need to first load them using the Image.open() method. You can also retrieve details like the image format using the format attribute:


from PIL import Image

# Load an image
image = Image.open('path_to_your_image.jpg')

# Get image format
print(f"Image format: {image.format}")

For more information on retrieving image properties such as size and mode, refer to our guide on Python-Pillow: How to get Image Filename, Size, Format, and Mode.

Supported Image Formats

Pillow supports a wide range of formats, including JPEG, PNG, GIF, BMP, and more. This flexibility allows you to handle different types of images in your projects.

Converting Images between Formats

Pillow makes it easy to convert images from one format to another using the save() method. Here is an example of converting a JPEG image to PNG:


# Convert JPEG to PNG
image.save('output_image.png', 'PNG')

The second parameter specifies the target format. Make sure to specify the correct file extension in the output file name.

Converting Images to Grayscale

To convert an image to grayscale, use the convert() method with the mode 'L':


# Convert image to grayscale
gray_image = image.convert('L')

# Save the grayscale image
gray_image.save('grayscale_image.jpg')

Saving Images in Different Formats

After making changes or applying filters, you can save your images in any supported format using the save() method:


# Save the image in BMP format
image.save('output_image.bmp', 'BMP')

For more on modifying images before saving, you might find our guide on Resizing Images Using Python Pillow useful.

Handling Transparency in PNG Images

If you're working with PNG images that include transparency, ensure that the image mode is set to 'RGBA' before saving:


# Ensure transparency is preserved
image = image.convert('RGBA')
image.save('output_image.png')

This is especially useful when adding watermarks or blending images, as explained in our article on Adding Text and Watermarks to Images using Python Pillow.

Batch Conversion of Image Formats

To convert multiple images from one format to another, use a loop to process each image:


import os

# Convert all JPEG images in a directory to PNG
directory = 'path_to_your_images'
for filename in os.listdir(directory):
    if filename.endswith('.jpg'):
        img = Image.open(os.path.join(directory, filename))
        img.save(os.path.join(directory, filename.replace('.jpg', '.png')), 'PNG')

For more directory operations, refer to our guide on Python-Pillow: How to Show an image in Python.

Conclusion

With Pillow, you can easily convert images between different formats, work with transparency, and make other adjustments as needed. These capabilities make it a versatile tool for any image processing task. For further exploration, check out our other articles like Image Filters and Enhancements using Python Pillow and Image Rotation and Flipping with Python Pillow.

For more detailed documentation on image formats supported by Pillow, refer to the official Pillow documentation.