本篇文章详细介绍了Python图像处理库Pillow的各种常见操作方法和技巧,适合需要对图片进行处理或编辑的开发者阅读。
Pillow库是Python Imaging Library (PIL) 的升级版,并且专为支持 Python 3 而设计。它提供了丰富的图像处理功能,包括创建、打开、显示、保存、转换以及编辑等多种操作。
以下是一些常见的 Pillow 库使用方法:
1. **创建新图像**:
使用 `Image.new()` 函数可以创建一个新图像。
```python
from PIL import Image
imNew = Image.new(RGB, (800, 600), red)
```
2. **显示图像**:
可以使用 `.show()` 方法在默认的查看器中展示图像。
```python
imNew.show()
```
3. **抓取屏幕快照**:
使用 `ImageGrab` 模块可以抓取屏幕的一部分或全部内容,并保存为文件。
```python
import ImageGrab
screenshot = ImageGrab.grab()
screenshot.save(grab.jpg)
```
4. **打开图像**:
通过 `Image.open()` 函数来加载本地或者网络上的图像文件。
```python
im = Image.open(1.jpg)
```
5. **复制图像**:
使用 `.copy()` 方法可以创建图像的副本。
```python
imCopy = im.copy()
```
6. **获取图像尺寸**:
`size` 属性返回一个元组,包含图像宽度和高度的信息。
```python
w, h = im.size
print(f图片宽高: {w} * {h})
```
7. **创建缩略图**:
使用 `.thumbnail()` 方法可以生成不拉伸的缩放版本,通常用于缩小尺寸。
```python
im.thumbnail((160, 120))
im.save(1_thumbnail.jpg)
```
8. **调整图像大小**:
`resize()` 方法允许改变图像的实际尺寸,可能会影响比例。
```python
imResize = im.resize((w * 2, h * 2))
imResize.save(1_resize.jpg)
```
9. **模糊处理**:
使用 `.filter()` 方法结合内置的模糊滤镜实现图像模糊效果。
```python
import ImageFilter
blurred_image = im.filter(ImageFilter.BLUR)
blurred_image.save(1_blur.jpg)
```
10. **旋转图像**:
`rotate()` 方法可以按照指定的角度来翻转图像。
```python
rotated_im = im.rotate(45)
rotated_im.save(1_rotate.jpg)
```
11. **水平或垂直镜像**:
通过 `.transpose()` 方法传入相应的参数进行图像的镜像操作。
```python
mirrored_image = im.transpose(Image.FLIP_LEFT_RIGHT)
mirrored_image.save(mirrored_output.png)
```
12. **裁剪图像**:
使用 `crop()` 方法来从原图中提取特定区域的内容。
```python
box = (200, 200, 400, 400)
cropped_image = im.crop(box)
cropped_image.save(1_crop.jpg)
```
13. **在图像上添加文字**:
使用 `ImageDraw` 模块和 `ImageFont` 类可以在图片中插入文本。
```python
from PIL import ImageDraw, ImageFont
draw = ImageDraw.Draw(im)
font = ImageFont.truetype(C:/WINDOWS/Fonts/stxingka.ttf, 20)
draw.text((100, 100), 你好,世界!, fill=blue, font=font)
im.save(output_with_text.jpg)
```
14. **在图像上添加图片**:
使用 `paste()` 方法将一个图层粘贴到另一个之上。
```python
small_im = Image.new(RGB, (30, 30), blue)
im.paste(small_im, (50, 50))
im.save(1_paste.jpg)
```
15. **图像拼接**:
使用 `new()` 和 `paste()` 方法可以将多个图层合并成一个。
```python
new_image = Image.new(RGB, (im.width * 2, im.height))
new_image.paste(im, (0, 0))
new_image.paste(another_im, (im.width, 0))
new_image.save(combined_images.jpg)
```
Pillow 库提供了许多基本的图像处理功能,适用于大多数应用场景。对于更复杂的操作,则可以探索其高级特性如颜色空间转换、滤波器等,并结合其他库(例如 OpenCV)实现更为复杂