当前位置: 首页 > news >正文

Pillow 安装使用教程

一、Pillow 简介

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


二、安装 Pillow

2.1 使用 pip 安装(推荐)

pip install Pillow

2.2 验证安装

import PIL
print(PIL.__version__)

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


三、基本使用示例

3.1 打开图像

from PIL import Imageimg = Image.open("example.jpg")
img.show()

3.2 图像信息

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

3.3 图像保存

img.save("output.png")

四、常见图像操作

4.1 缩放与裁剪

resized = img.resize((200, 200))
cropped = img.crop((100, 100, 300, 300))  # 左、上、右、下

4.2 旋转与翻转

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

4.3 转换颜色模式

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

五、绘图与文字处理

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

使用自定义字体:

font = ImageFont.truetype("arial.ttf", 24)
draw.text((10, 10), "你好", font=font, fill="black")

六、图像滤镜与增强

from PIL import ImageFilterblurred = img.filter(ImageFilter.BLUR)
contour = img.filter(ImageFilter.CONTOUR)

七、批量图像处理

import osfor 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()


九、学习资源推荐

  • Pillow 官方文档
  • 菜鸟教程 Pillow 教程
  • Pillow 示例合集 GitHub

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

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

在这里插入图片描述

http://www.lryc.cn/news/579215.html

相关文章:

  • IO进程线程 (进程)
  • Rust实现黑客帝国数字雨特效
  • CppCon 2018 学习:Feather: A Modern C++ Web Development Framework
  • FPGA的开发流程
  • 旋转不变子空间( ESPRIT) 算法
  • 基于SpringBoot的场地预定管理系统
  • 新版本没有docker-desktop-data分发 | docker desktop 镜像迁移
  • 当AR遇上深度学习:实时超声肾脏分割与测量技术全解析
  • FastAPI 安装使用教程
  • 人脸活体识别3:C/C++实现人脸眨眼 张嘴 点头 摇头识别(可实时检测)
  • 回顾JAVA中的锁机制
  • 重塑智能体决策路径:深入理解 ReAct 框架
  • WPF路由事件:冒泡、隧道与直接全解析
  • 嵌入式软件面经(四)Q:请说明在 ILP32、LP64 与 LLP64 三种数据模型下,常见基本类型及指针的 sizeof 值差异,并简要解释其原因
  • 软件开发早期阶段,使用存储过程的优势探讨:敏捷开发下的利器
  • 【C++】--入门
  • 欧拉角、四元数和旋转矩阵的变换关系以及无人机的坐标变换
  • 如何在Excel中每隔几行取一行
  • sqlmap学习笔记ing(3.[MoeCTF 2022]Sqlmap_boy,cookie的作用)
  • LeetCode Hot 100 滑动窗口 【Java和Golang解法】
  • 鸿蒙开发技巧---去除字符串两端的空格
  • AI大模型如何重塑软件开发流程?从自动化革命到人机共生范式
  • 怎样理解:source ~/.bash_profile
  • 深入Flink核心概念:解锁大数据流处理的奥秘
  • SAP WM LT10 TO创建增强
  • Android Auto即将带来变革
  • Agno(一)
  • 机器学习在智能制造业中的应用:质量检测与设备故障预测
  • Vue + RuoYi 前后端分离入门手册
  • Ubuntu云服务器上部署发布Vite项目