115 lines
3.1 KiB
Markdown
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. |