图像处理工具包Pillow的使用分享

Pillow是Python图像处理库之一,它可以帮助我们轻松地处理图像文件,包括缩放、裁剪、旋转、滤镜和格式转换等。下面我将分享一个使用Pillow的案例,以及具体步骤:

案例:将一张图片的大小调整为指定尺寸,并添加水印

步骤:

1、安装Pillow库

使用pip命令安装Pillow库:

python 复制代码
pip install Pillow
2、导入Pillow库

在Python代码中导入Pillow库:

python 复制代码
from PIL import Image, ImageDraw, ImageFont
3、打开图片文件

使用Pillow库中的Image.open()方法打开要处理的图片文件:

python 复制代码
image = Image.open('example.jpg')
4、调整图片尺寸

使用Image.resize()方法调整图片的大小:

python 复制代码
new_size = (800, 600)
resized_image = image.resize(new_size)
5、添加水印

使用ImageDraw.Draw()方法创建一个画布,然后使用ImageDraw.text()方法在画布上添加文本水印:

python 复制代码
draw = ImageDraw.Draw(resized_image)
text = '© binjie'
font = ImageFont.truetype('arial.ttf', 36)
textwidth, textheight = draw.textsize(text, font)
x = resized_image.size[0] - textwidth - 10
y = resized_image.size[1] - textheight - 10
draw.text((x, y), text, font=font)
6、保存图片文件

使用Image.save()方法保存处理后的图片文件:

python 复制代码
resized_image.save('example_resized.jpg')
完整代码
python 复制代码
from PIL import Image, ImageDraw, ImageFont

# 打开图片文件
image = Image.open('example.jpg')

# 调整图片大小
new_size = (800, 600)
resized_image = image.resize(new_size)

# 添加水印
# 这五行代码使用ImageDraw模块创建一个画布,并在画布上添加水印。我们首先使用ImageDraw.Draw()方法创建一个画布,
# 并将调整后的图片对象作为参数传入。然后,我们定义了要添加的文本内容、字体和字号。
# 接下来,我们使用ImageDraw.textsize()方法获取文本的宽度和高度,并计算出文本应该添加的位置。
# 最后,我们使用ImageDraw.text()方法在画布上添加文本水印。
draw = ImageDraw.Draw(resized_image)
text = '© binjie'
font = ImageFont.truetype('arial.ttf', 36)
textwidth, textheight = draw.textsize(text, font)
x = resized_image.size[0] - textwidth - 10
y = resized_image.size[1] - textheight - 10
draw.text((x, y), text, font=font)

# 保存图片文件
resized_image.save('example_resized.jpg')
除了调整图片尺寸和添加水印之外,Pillow还提供了许多其他功能,例如:

图片裁剪

使用Image.crop()方法可以对图片进行裁剪。该方法接受一个四元组参数(left, upper, right, lower),分别表示要裁剪出来的区域的左上角和右下角坐标。例如,以下代码将图片裁剪为宽度为200像素、高度为100像素的区域:

python 复制代码
cropped_image = image.crop((0, 0, 200, 100))

图片旋转

使用Image.rotate()方法可以对图片进行旋转。该方法接受一个角度作为参数,表示要旋转的角度。例如,以下代码将图片逆时针旋转45度:

python 复制代码
rotated_image = image.rotate(-45)

滤镜效果

使用ImageFilter模块中的滤镜类可以给图片添加滤镜效果。例如,以下代码给图片添加了模糊效果:

python 复制代码
from PIL import ImageFilter

blurred_image = image.filter(ImageFilter.BLUR)

图片格式转换

使用Image.save()方法可以将图片保存为不同的格式。该方法接受一个文件名和格式作为参数。例如,以下代码将PNG格式的图片保存为JPEG格式:

python 复制代码
image.save('example.jpg', 'JPEG')

图片缩略图

使用Image.thumbnail()方法可以在不改变图片纵横比的前提下,将图片缩小到指定尺寸。例如,以下代码将图片缩略到宽度为200像素、高度为200像素的区域:

python 复制代码
image.thumbnail((200, 200))

这些仅仅是Pillow库中的一小部分功能,更多功能可以参考Pillow官方文档

相关推荐
玩大数据的龙威30 分钟前
农经权二轮延包—各种地块示意图
python·arcgis
ZH154558913132 分钟前
Flutter for OpenHarmony Python学习助手实战:数据库操作与管理的实现
python·学习·flutter
belldeep41 分钟前
python:用 Flask 3 , mistune 2 和 mermaid.min.js 10.9 来实现 Markdown 中 mermaid 图表的渲染
javascript·python·flask
喵手42 分钟前
Python爬虫实战:电商价格监控系统 - 从定时任务到历史趋势分析的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·电商价格监控系统·从定时任务到历史趋势分析·采集结果sqlite存储
喵手1 小时前
Python爬虫实战:京东/淘宝搜索多页爬虫实战 - 从反爬对抗到数据入库的完整工程化方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·京东淘宝页面数据采集·反爬对抗到数据入库·采集结果csv导出
B站_计算机毕业设计之家1 小时前
猫眼电影数据可视化与智能分析平台 | Python Flask框架 Echarts 推荐算法 爬虫 大数据 毕业设计源码
python·机器学习·信息可视化·flask·毕业设计·echarts·推荐算法
PPPPPaPeR.1 小时前
光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)
开发语言·python·数码相机·算法
JaydenAI1 小时前
[拆解LangChain执行引擎] ManagedValue——一种特殊的只读虚拟通道
python·langchain
骇城迷影1 小时前
Makemore 核心面试题大汇总
人工智能·pytorch·python·深度学习·线性回归
长安牧笛1 小时前
反传统学习APP,摒弃固定课程顺序,根据用户做题正确性,学习速度,动态调整课程难度,比如某知识点学不会,自动推荐基础讲解和练习题,学习后再进阶,不搞一刀切。
python·编程语言