Files
the_information_nexus/tech_docs/python/pillow2.md
2024-05-01 12:28:44 -06:00

115 lines
3.1 KiB
Markdown

Let's focus on `Pillow` (PIL Fork), an extensive library used for opening, manipulating, and saving many different image file formats in Python. It's a continuation and an extension of the original Python Imaging Library (PIL) and is designed to be user-friendly and efficient for processing images.
### Pillow (PIL Fork) Complete Guide
#### Installation
```sh
pip install Pillow
```
### Basic Operations
#### Opening and Saving Images
```python
from PIL import Image
# Open an image
img = Image.open("path/to/image.jpg")
# Save the image in a different format
img.save("path/to/new_image.png")
```
#### Displaying Images
```python
img.show()
```
### Image Manipulation
#### Cropping Images
```python
# Define the box to crop (left, upper, right, lower)
box = (100, 100, 400, 400)
cropped_img = img.crop(box)
cropped_img.show()
```
#### Resizing Images
```python
# Resize the image to a new resolution
new_size = (300, 300)
resized_img = img.resize(new_size)
resized_img.show()
```
#### Rotating and Flipping Images
```python
# Rotate the image by 90 degrees
rotated_img = img.rotate(90)
rotated_img.show()
# Flip the image left to right
flipped_img = img.transpose(Image.FLIP_LEFT_RIGHT)
flipped_img.show()
```
#### Color Transforms
```python
# Convert to grayscale
gray_img = img.convert('L')
gray_img.show()
```
### Image Enhancements
Pillow provides the `ImageEnhance` module for adjusting color, brightness, contrast, and sharpness.
```python
from PIL import ImageEnhance
# Enhance the brightness
enhancer = ImageEnhance.Brightness(img)
bright_img = enhancer.enhance(2.0) # Increase brightness
bright_img.show()
# Enhance the contrast
enhancer = ImageEnhance.Contrast(img)
contrast_img = enhancer.enhance(2.0) # Increase contrast
contrast_img.show()
```
### Drawing on Images
Pillow allows you to draw on images directly using the `ImageDraw` module.
```python
from PIL import ImageDraw
draw = ImageDraw.Draw(img)
draw.line((0, 0) + img.size, fill=128)
draw.line((0, img.size[1], img.size[0], 0), fill=128)
```
### Working with Text
You can also use Pillow to add text to images.
```python
from PIL import ImageFont
draw.text((10, 25), "Hello World", fill="black")
# Using a TTF font
font = ImageFont.truetype("path/to/font.ttf", 15)
draw.text((10, 50), "Hello with font", font=font, fill="black")
```
### Potential Use Cases
- **Automating Image Editing**: Batch processing images for web optimization, creating thumbnails, or applying watermarks.
- **Data Visualization**: Generating dynamic images or charts for web or print.
- **Content Generation**: Creating images for social media posts, website banners, or marketing materials programmatically.
- **Machine Learning Preprocessing**: Preparing image datasets for training, including resizing, normalization, and augmentation.
Pillow's extensive set of features makes it an essential library for any project that involves image processing in Python. Whether you're developing a web application that handles user-uploaded images, creating graphics dynamically, or preprocessing data for machine learning models, Pillow provides the tools necessary to accomplish these tasks efficiently and effectively.