Convert Figma logo to code with AI

python-pillow logoPillow

Python Imaging Library (Fork)

12,088
2,211
12,088
118

Top Related Projects

Image processing in Python

1,456

Python library for reading and writing image data

10,063

thumbor is an open-source photo thumbnail service by globo.com

Quick Overview

Pillow is a fork of the Python Imaging Library (PIL) that adds support for opening, manipulating, and saving many different image file formats. It is the go-to library for image processing in Python, providing a wide range of features for image editing, filtering, and drawing operations.

Pros

  • Extensive support for various image formats
  • Easy-to-use API for image manipulation
  • Active development and community support
  • Seamless integration with other Python libraries

Cons

  • Performance can be slower compared to specialized libraries
  • Limited support for advanced image processing techniques
  • Some operations can be memory-intensive for large images
  • Documentation can be overwhelming for beginners

Code Examples

  1. Resizing an image:
from PIL import Image

# Open an image
img = Image.open("input.jpg")

# Resize the image
resized_img = img.resize((300, 200))

# Save the resized image
resized_img.save("output.jpg")
  1. Applying a filter:
from PIL import Image, ImageFilter

# Open an image
img = Image.open("input.jpg")

# Apply a Gaussian blur filter
blurred_img = img.filter(ImageFilter.GaussianBlur(radius=5))

# Save the blurred image
blurred_img.save("blurred.jpg")
  1. Drawing on an image:
from PIL import Image, ImageDraw

# Create a new image
img = Image.new("RGB", (300, 200), color="white")

# Create a drawing object
draw = ImageDraw.Draw(img)

# Draw a rectangle
draw.rectangle([50, 50, 250, 150], fill="red", outline="black")

# Save the image
img.save("drawing.png")

Getting Started

To get started with Pillow, follow these steps:

  1. Install Pillow using pip:

    pip install Pillow
    
  2. Import the necessary modules in your Python script:

    from PIL import Image, ImageFilter, ImageDraw
    
  3. Open an image file:

    img = Image.open("path/to/your/image.jpg")
    
  4. Perform operations on the image (e.g., resize, apply filters, draw):

    resized_img = img.resize((300, 200))
    filtered_img = img.filter(ImageFilter.SHARPEN)
    
  5. Save the modified image:

    resized_img.save("resized_image.jpg")
    filtered_img.save("filtered_image.jpg")
    

Competitor Comparisons

Image processing in Python

Pros of scikit-image

  • More advanced and specialized image processing algorithms
  • Better integration with scientific Python ecosystem (NumPy, SciPy)
  • Extensive documentation and examples for scientific image analysis

Cons of scikit-image

  • Slower performance for basic image operations
  • Steeper learning curve for beginners
  • Less support for common image file formats

Code Comparison

Pillow example:

from PIL import Image, ImageFilter

img = Image.open("image.jpg")
blurred = img.filter(ImageFilter.BLUR)
blurred.save("blurred.jpg")

scikit-image example:

from skimage import io, filters

img = io.imread("image.jpg")
blurred = filters.gaussian(img, sigma=1)
io.imsave("blurred.jpg", blurred)

Both libraries offer image processing capabilities, but scikit-image provides more advanced algorithms and scientific analysis tools. Pillow is generally faster for basic operations and has better support for various image formats. scikit-image integrates well with NumPy arrays, making it suitable for scientific computing workflows. Pillow is more user-friendly for beginners and general-purpose image manipulation tasks. The choice between the two depends on the specific requirements of your project and your familiarity with scientific Python libraries.

1,456

Python library for reading and writing image data

Pros of imageio

  • Supports a wider range of image and video formats
  • Provides a unified interface for reading and writing various types of images and videos
  • Offers better support for multi-dimensional data and scientific imaging

Cons of imageio

  • Less mature and less widely used compared to Pillow
  • May have slower performance for basic image processing tasks
  • Smaller community and fewer third-party extensions

Code Comparison

Pillow:

from PIL import Image

img = Image.open("image.jpg")
img = img.rotate(45)
img.save("rotated_image.jpg")

imageio:

import imageio

img = imageio.imread("image.jpg")
img = imageio.imrotate(img, 45)
imageio.imwrite("rotated_image.jpg", img)

Both libraries offer similar functionality for basic image operations, but their APIs differ slightly. Pillow uses an object-oriented approach, while imageio provides a more functional interface. imageio's strength lies in its ability to handle various formats and multi-dimensional data, making it particularly useful for scientific imaging and video processing. Pillow, on the other hand, is more focused on traditional image processing tasks and has a larger ecosystem of tools and extensions.

10,063

thumbor is an open-source photo thumbnail service by globo.com

Pros of Thumbor

  • Specialized image processing server with on-the-fly resizing and filters
  • Built-in security features like URL signing for image manipulation
  • Supports multiple storage backends (file system, S3, etc.)

Cons of Thumbor

  • More complex setup and configuration compared to Pillow
  • Limited to server-side image processing
  • Steeper learning curve for developers new to image processing

Code Comparison

Thumbor (server configuration):

SECURITY_KEY = 'MY_SECURE_KEY'
ALLOW_UNSAFE_URL = False
STORAGE = 'thumbor.storages.file_storage'

Pillow (image resizing):

from PIL import Image

img = Image.open('image.jpg')
img_resized = img.resize((300, 200))
img_resized.save('resized_image.jpg')

Thumbor focuses on server-side image processing with a URL-based API, while Pillow is a more general-purpose image manipulation library for Python. Thumbor excels in on-demand image processing scenarios, whereas Pillow is better suited for local image manipulation tasks within Python applications.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Pillow logo

Pillow

Python Imaging Library (Fork)

Pillow is the friendly PIL fork by Jeffrey A. Clark and contributors. PIL is the Python Imaging Library by Fredrik Lundh and contributors. As of 2019, Pillow development is supported by Tidelift.

docs Documentation Status
tests GitHub Actions build status (Lint) GitHub Actions build status (Test Linux and macOS) GitHub Actions build status (Test Windows) GitHub Actions build status (Test MinGW) GitHub Actions build status (Test Cygwin) GitHub Actions build status (Test Docker) AppVeyor CI build status (Windows) GitHub Actions build status (Wheels) Code coverage Fuzzing Status
package Zenodo Tidelift Newest PyPI version Number of PyPI downloads OpenSSF Best Practices
social Join the chat at https://gitter.im/python-pillow/Pillow Follow on https://fosstodon.org/@pillow

Overview

The Python Imaging Library adds image processing capabilities to your Python interpreter.

This library provides extensive file format support, an efficient internal representation, and fairly powerful image processing capabilities.

The core image library is designed for fast access to data stored in a few basic pixel formats. It should provide a solid foundation for a general image processing tool.

More Information

Report a Vulnerability

To report a security vulnerability, please follow the procedure described in the Tidelift security policy.