Pillow 安装使用教程

一、Pillow 简介

Pillow 是 Python 图像处理库 PIL(Python Imaging Library)的友好分支,是图像处理的事实标准。它支持打开、编辑、转换、保存多种图像格式,常用于图像批量处理、验证码识别、缩略图生成等应用场景。


二、安装 Pillow

2.1 使用 pip 安装(推荐)

bash 复制代码
pip install Pillow

2.2 验证安装

python 复制代码
import PIL
print(PIL.__version__)

若无报错且输出版本号,则说明安装成功。


三、基本使用示例

3.1 打开图像

python 复制代码
from PIL import Image

img = Image.open("example.jpg")
img.show()

3.2 图像信息

python 复制代码
print(img.format)      # 图像格式(JPEG、PNG 等)
print(img.size)        # 图像尺寸
print(img.mode)        # 颜色模式(RGB、L 等)

3.3 图像保存

python 复制代码
img.save("output.png")

四、常见图像操作

4.1 缩放与裁剪

python 复制代码
resized = img.resize((200, 200))
cropped = img.crop((100, 100, 300, 300))  # 左、上、右、下

4.2 旋转与翻转

python 复制代码
rotated = img.rotate(45)           # 顺时针旋转 45°
flipped = img.transpose(Image.FLIP_LEFT_RIGHT)  # 左右翻转

4.3 转换颜色模式

python 复制代码
gray = img.convert("L")    # 转为灰度图
rgba = img.convert("RGBA") # 转为带透明通道的图像

五、绘图与文字处理

python 复制代码
from PIL import ImageDraw, ImageFont

draw = ImageDraw.Draw(img)
draw.rectangle((50, 50, 150, 150), outline="red")
draw.text((60, 60), "Hello", fill="blue")

使用自定义字体:

python 复制代码
font = ImageFont.truetype("arial.ttf", 24)
draw.text((10, 10), "你好", font=font, fill="black")

六、图像滤镜与增强

python 复制代码
from PIL import ImageFilter

blurred = img.filter(ImageFilter.BLUR)
contour = img.filter(ImageFilter.CONTOUR)

七、批量图像处理

python 复制代码
import os

for filename in os.listdir("images"):
    if filename.endswith(".jpg"):
        img = Image.open(f"images/{filename}")
        img.thumbnail((300, 300))
        img.save(f"thumbnails/{filename}")

八、常见问题

Q1: 报错 OSError: cannot open resource

字体文件路径不正确,使用绝对路径或将字体文件放入项目目录中。

Q2: 中文无法显示?

需要使用支持中文的字体,如 simhei.ttfmsyh.ttf,并加载为 ImageFont.truetype()


九、学习资源推荐


本文由"小奇Java面试"原创发布,转载请注明出处。

可以搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

相关推荐
relis10 分钟前
解密llama.cpp中的batch与ubatch:深度学习推理优化的内存艺术
深度学习·batch·llama
中國龍在廣州25 分钟前
GPT-5冷酷操盘,游戏狼人杀一战封神!七大LLM狂飙演技,人类玩家看完沉默
人工智能·gpt·深度学习·机器学习·计算机视觉·机器人
山烛41 分钟前
深度学习:CNN 模型训练中的学习率调整(基于 PyTorch)
人工智能·pytorch·python·深度学习·cnn·调整学习率
THMAIL1 小时前
深度学习从入门到精通 - 神经网络核心原理:从生物神经元到数学模型蜕变
人工智能·python·深度学习·神经网络·算法·机器学习·逻辑回归
小关会打代码1 小时前
深度学习之第八课迁移学习(残差网络ResNet)
人工智能·深度学习·迁移学习
啦啦啦在冲冲冲3 小时前
解释一下roberta,bert-chinese和bert-case有啥区别还有bert-large这些
人工智能·深度学习·bert
张子夜 iiii4 小时前
传统神经网络实现-----手写数字识别(MNIST)项目
人工智能·pytorch·python·深度学习·算法
全息数据4 小时前
DDPM代码讲解【详细!!!】
深度学习·stable diffusion·多模态·ddpm
西猫雷婶5 小时前
神经网络|(十九)概率论基础知识-伽马函数·下
人工智能·深度学习·神经网络·机器学习·回归·scikit-learn·概率论
Honeysea_706 小时前
容器的定义及工作原理
人工智能·深度学习·机器学习·docker·ai·持续部署