From e88fe84a8d67338d2b0600a0d117827e728a7d36 Mon Sep 17 00:00:00 2001 From: medusa Date: Fri, 29 Mar 2024 00:40:36 +0000 Subject: [PATCH] Add docs/tech_docs/python/pillow.md --- docs/tech_docs/python/pillow.md | 115 ++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 docs/tech_docs/python/pillow.md diff --git a/docs/tech_docs/python/pillow.md b/docs/tech_docs/python/pillow.md new file mode 100644 index 0000000..e3bf614 --- /dev/null +++ b/docs/tech_docs/python/pillow.md @@ -0,0 +1,115 @@ +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. \ No newline at end of file