# Django Pillow

***

**1. Resizing an Image:**

```python
from PIL import Image

image = Image.open('image.jpg')
image.thumbnail((256, 256))  # Resize to 256x256
image.save('resized_image.jpg')
```

**2. Cropping an Image:**

```python
from PIL import Image

image = Image.open('image.jpg')
box = (100, 100, 200, 200)  # Define the crop area
image = image.crop(box)
image.save('cropped_image.jpg')
```

**3. Rotating an Image:**

```python
from PIL import Image

image = Image.open('image.jpg')
image = image.rotate(45)  # Rotate by 45 degrees clockwise
image.save('rotated_image.jpg')
```

**4. Flipping an Image:**

```python
from PIL import Image

image = Image.open('image.jpg')
image = image.transpose(Image.FLIP_LEFT_RIGHT)  # Flip horizontally
image = image.transpose(Image.FLIP_TOP_BOTTOM)  # Flip vertically
image.save('flipped_image.jpg')
```

**5. Converting an Image to Grayscale:**

```python
from PIL import Image

image = Image.open('image.jpg')
image = image.convert('L')  # Convert to grayscale
image.save('grayscale_image.jpg')
```

**6. Converting an Image to Black and White:**

```python
from PIL import Image

image = Image.open('image.jpg')
image = image.point(lambda x: 0 if x < 128 else 255)  # Threshold at 128
image.save('black_and_white_image.jpg')
```

**7. Blurring an Image:**

```python
from PIL import Image, ImageFilter

image = Image.open('image.jpg')
image = image.filter(ImageFilter.GaussianBlur(5))  # Blur with radius 5
image.save('blurred_image.jpg')
```

**8. Sharpening an Image:**

```python
from PIL import Image, ImageFilter

image = Image.open('image.jpg')
image = image.filter(ImageFilter.SHARPEN)
image.save('sharpened_image.jpg')
```

**9. Creating a Thumbnail:**

```python
from PIL import Image

image = Image.open('image.jpg')
image.thumbnail((128, 128))  # Resize to 128x128
image.save('thumbnail_image.jpg')
```

**10. Watermarking an Image:**

```python
from PIL import Image, ImageDraw

image = Image.open('image.jpg')
draw = ImageDraw.Draw(image)
draw.text((10, 10), "Watermark", fill=(255, 255, 255))
image.save('watermarked_image.jpg')
```

**11. Adding Text to an Image:**

```python
from PIL import Image, ImageDraw

image = Image.open('image.jpg')
draw = ImageDraw.Draw(image)
draw.text((10, 10), "Hello, World!", fill=(255, 255, 255))
image.save('text_added_image.jpg')
```

**12. Drawing a Rectangle on an Image:**

```python
from PIL import Image, ImageDraw

image = Image.open('image.jpg')
draw = ImageDraw.Draw(image)
draw.rectangle((10, 10, 100, 100), outline=(255, 255, 0))  # Yellow rectangle
image.save('rectangle_drawn_image.jpg')
```

**13. Drawing a Circle on an Image:**

```python
from PIL import Image, ImageDraw

image = Image.open('image.jpg')
draw = ImageDraw.Draw(image)
draw.ellipse((10, 10, 100, 100), outline=(255, 0, 0))  # Red circle
image.save('circle_drawn_image.jpg')
```

**14. Masking an Image:**

```python
from PIL import Image

image = Image.open('image.jpg')
mask = Image.open('mask.png')  # Alpha channel mask
image.putalpha(mask)
image.save('masked_image.jpg')
```

**15. Compositing Two Images:**

```python
from PIL import Image

image1 = Image.open('image1.jpg')
image2 = Image.open('image2.jpg').convert('RGBA')  # Make transparent
image1.paste(image2, (0, 0), image2)
image1.save('composite_image.jpg')
```

**16. Converting an Image to Different File Format:**

```python
from PIL import Image

image = Image.open('image.jpg')
image.save('image.png', 'PNG')  # Convert to PNG
image.save('image.gif', 'GIF')  # Convert to GIF
```

**17. Getting Image Dimensions:**

```python
from PIL import Image

image = Image.open('image.jpg')
width, height = image.size
print(f"Width: {width}, Height: {height}")
```

**18. Getting Image Metadata:**

```python
from PIL import Image

image = Image.open('image.jpg')
metadata = image.info
print(metadata)
```

**19. Saving Image Metadata:**

```python
from PIL import Image

image = Image.open('image.jpg')
image.save('image.jpg', 'JPEG', metadata=image.info)  # Save metadata
```

**20. Iterating Over Image Pixels:**

```python
from PIL import Image

image = Image.open('image.jpg')
for x in range(image.width):
    for y in range(image.height):
        r, g, b = image.getpixel((x, y))
```

**21. Modifying Individual Pixels:**

```python
from PIL import Image

image = Image.open('image.jpg')
image.putpixel((10, 10), (255, 255, 0))  # Set pixel at (10, 10) to yellow
image.save('modified_image.jpg')
```

**22. Creating an Image from Scratch:**

```python
from PIL import Image

image = Image.new('RGB', (256, 256), (255, 255, 255))  # White image
image.save('new_image.jpg')
```

**23. Creating an Image from an Array:**

```python
import numpy as np
from PIL import Image

array = np.array([[255, 0, 0], [0, 255, 0], [0, 0, 255]])
image = Image.fromarray(array)
image.save('array_image.jpg')
```

**24. Creating an Image Histogram:**

```python
from PIL import Image

image = Image.open('image.jpg')
histogram = image.histogram()
print(histogram)
```

**25. Image Smoothing:**

```python
from PIL import Image, ImageFilter

image = Image.open('image.jpg')
image = image.filter(ImageFilter.SMOOTH)
image.save('smoothed_image.jpg')
```

**26. Image Edge Detection:**

```python
from PIL import Image, ImageFilter

image = Image.open('image.jpg')
image = image.filter(ImageFilter.EDGE_ENHANCE)
image.save('edge_detected_image.jpg')
```

**27. Creating an Image Montage:**

```python
from PIL import Image

images = ['image1.jpg', 'image2.jpg', 'image3.jpg']

montage = Image.new('RGB', (3 * 256, 256))
for i, image in enumerate(images):
    image = Image.open(image).resize((256, 256))
    montage.paste(image, (i * 256, 0))

montage.save('montage_image.jpg')
```

**28. Converting an Image to Binary:**

```python
from PIL import Image

image = Image.open('image.jpg').convert('1')  # Convert to 1-bit black and white
image.save('binary_image.jpg')
```

**29. Drawing a Line on an Image:**

```python
from PIL import Image, ImageDraw

image = Image.open('image.jpg')
draw = ImageDraw.Draw(image)
draw.line((10, 10, 100, 100), fill=(255, 0, 0))  # Draw a red line
image.save('line_drawn_image.jpg')
```

**30. Drawing an Arc on an Image:**

```python
from PIL import Image, ImageDraw

image = Image.open('image.jpg')
draw = ImageDraw.Draw(image)
draw.arc((10, 10, 100, 100), 0, 90, fill=(255, 255, 0))  # Draw a yellow arc
image.save('arc_drawn_image.jpg')
```

**31. Drawing a Pie on an Image:**

```python
from PIL import Image, ImageDraw

image = Image.open('image.jpg')
draw = ImageDraw.Draw(image)
draw.pie((10, 10, 100, 100), 0, 90, fill=(255, 0, 255))  # Draw a magenta pie
image.save('pie_drawn_image.jpg')
```

**32. Creating an Affine Transformation:**

```python
from PIL import Image, ImageTransform

image = Image.open('image.jpg')
transform = ImageTransform.AffineTransform((1, 0, 0, 0, 1, 0))  # Identity transform
image = image.transform((256, 256), Image.AFFINE, transform)
image.save('transformed_image.jpg')
```

**33. Creating a Perspective Transformation:**

```python
from PIL import Image, ImageTransform

image = Image.open('image.jpg')
transform = ImageTransform.PerspectiveTransform((1, 0, 0, 0, 1, 0, 0, 0, 1))  # Identity transform
image = image.transform((256, 256), Image.PERSPECTIVE, transform)
image.save('transformed_image.jpg')
```

**34. Creating a Color Lookup Table:**

```python
from PIL import Image, ImageColor

lut = []
for i in range(256):
    lut.append(ImageColor.getrgb("black"))  # Create a grayscale lookup table
image = Image.open('image.jpg').convert('L')  # Convert image to grayscale
image.putlut(lut)
image.save('grayscale_image.jpg')
```

**35. Splitting a Multi-Layer Image into Bands:**

```python
from PIL import Image

image = Image.open('image.psd').split()  # Split into individual bands
for band in image:
    band.save('band_' + str(band.band) + '.jpg')  # Save each band as a separate image
```

**36. Merging Multi-Band Images:**

```python
from PIL import Image

bands = [Image.open('band_1.jpg'), Image.open('band_2.jpg'), Image.open('band_3.jpg')]
image = Image.merge('RGB', bands)  # Merge the bands into a single image
image.save('merged_image.jpg')
```
