完备的 Pillow 利用教程

打印 上一主题 下一主题

主题 687|帖子 687|积分 2061

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Pillow 是 Python 的一个图像处理惩罚库,它是 Python Imaging Library(PIL)的一个分支和升级版本。Pillow 提供了多种图像处理惩罚功能,包括打开、操作和保存图像格式的支持。通过本教程,你将学习如何利用 Pillow 进行常见的图像处理惩罚操作。

1. 安装 Pillow

首先,确保你已经安装了 Pillow。假如没有安装,可以利用以下命令:
  1. pip install Pillow
复制代码

2. 导入 Pillow 模块

在 Python 中,利用 Pillow 时通常必要导入 PIL 库的 Image 和 ImageDraw 模块。
  1. from PIL import Image, ImageDraw, ImageFont
复制代码

3. 打开和表现图像

要加载和表现图像,可以利用 Image.open() 方法打开图像文件,并利用 show() 方法表现图像。
  1. # 打开图像
  2. image = Image.open('example.jpg')
  3. # 显示图像
  4. image.show()
复制代码
Image.open() 方法担当图像文件的路径作为参数,并返回一个 Image 对象。show() 方法会调用默认的图片检察器表现图像。

4. 图像的基本操作

4.1 获取图像尺寸

利用 size 属性可以获取图像的宽度和高度。
  1. # 获取图像尺寸
  2. width, height = image.size
  3. print(f"图像宽度: {width}, 图像高度: {height}")
复制代码
4.2 改变图像大小

利用 resize() 方法可以改变图像的尺寸。
  1. # 改变图像大小
  2. new_image = image.resize((400, 400))
  3. new_image.show()
复制代码
在 resize() 方法中,你必要提供一个元组,表现新的尺寸(宽度, 高度)。
4.3 剪裁图像

利用 crop() 方法可以剪裁图像,裁剪的地区由左、上、右、下坐标组成。
  1. # 剪裁图像
  2. cropped_image = image.crop((50, 50, 300, 300))
  3. cropped_image.show()
复制代码
这个代码会剪裁一个从 (50, 50) 到 (300, 300) 的矩形地区。
4.4 旋转图像

利用 rotate() 方法可以旋转图像,旋转角度是以逆时针方向为正。
  1. # 旋转图像
  2. rotated_image = image.rotate(90)  # 逆时针旋转90度
  3. rotated_image.show()
复制代码
4.5 翻转图像

通过 transpose() 方法可以实现水平或垂直翻转图像。
  1. # 水平翻转
  2. flipped_image = image.transpose(Image.FLIP_LEFT_RIGHT)
  3. flipped_image.show()
  4. # 垂直翻转
  5. flipped_image = image.transpose(Image.FLIP_TOP_BOTTOM)
  6. flipped_image.show()
复制代码

5. 图像滤镜

Pillow 提供了一些常用的图像滤镜,可以通过 ImageFilter 模块利用。
  1. from PIL import ImageFilter
  2. # 应用模糊滤镜
  3. blurred_image = image.filter(ImageFilter.BLUR)
  4. blurred_image.show()
  5. # 应用锐化滤镜
  6. sharpened_image = image.filter(ImageFilter.SHARPEN)
  7. sharpened_image.show()
  8. # 应用边缘增强滤镜
  9. edges_image = image.filter(ImageFilter.EDGE_ENHANCE)
  10. edges_image.show()
复制代码
你可以利用差别的滤镜结果来增强或改变图像的结果。

6. 操作图像颜色

Pillow 提供了处理惩罚图像颜色的功能,比方转换颜色模式、调整对比度和亮度等。
6.1 转换颜色模式

你可以利用 convert() 方法转换图像的颜色模式。比方,从 RGB 转为灰度图像:
  1. # 转为灰度图
  2. grayscale_image = image.convert("L")
  3. grayscale_image.show()
复制代码
在 convert() 方法中,你可以传递差别的模式,如:


  • "RGB":彩色图像
  • "L":灰度图像
  • "RGBA":带透明度的图像
6.2 调整亮度和对比度

利用 ImageEnhance 模块来增强图像的亮度、对比度和色彩。
  1. from PIL import ImageEnhance
  2. # 调整亮度
  3. enhancer = ImageEnhance.Brightness(image)
  4. bright_image = enhancer.enhance(1.5)  # 增加50%的亮度
  5. bright_image.show()
  6. # 调整对比度
  7. enhancer = ImageEnhance.Contrast(image)
  8. high_contrast_image = enhancer.enhance(2)  # 提高对比度
  9. high_contrast_image.show()
复制代码
enhance() 方法的参数通常是一个浮动值,1.0 表现原始结果,值大于 1.0 表现增强,值小于 1.0 表现减弱。

7. 绘制和添加笔墨

Pillow 还允许你在图像上绘制内容,比方绘制线条、矩形、笔墨等。
7.1 创建绘图对象

  1. # 创建一个绘图对象
  2. draw = ImageDraw.Draw(image)
复制代码
7.2 绘制线条和矩形

  1. # 绘制直线
  2. draw.line((50, 50, 200, 200), fill=(255, 0, 0), width=5)
  3. # 绘制矩形
  4. draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
复制代码
7.3 绘制文本

你可以利用 ImageFont 加载字体文件来绘制文本:
  1. # 加载字体
  2. font = ImageFont.truetype("arial.ttf", 36)
  3. # 绘制文字
  4. draw.text((100, 100), "Hello, Pillow!", fill="white", font=font)
  5. image.show()
复制代码
这里的 ImageFont.truetype() 方法担当字体文件路径和字体大小。你可以选择其他字体和大小来调整文本样式。

8. 图像保存

利用 save() 方法保存图像。你可以保存为差别的格式,如 JPG、PNG、GIF 等。
  1. # 保存为 PNG 格式
  2. image.save("output_image.png")
  3. # 保存为 JPG 格式
  4. image.save("output_image.jpg")
复制代码
假如必要转换图像格式,可以在 save() 方法中指定目标格式。

9. 图像合成

Pillow 还提供了图像合成的功能。你可以将多个图像合成一个图像。
9.1 拼接图像

  1. # 将两个图像拼接在一起
  2. image1 = Image.open('image1.jpg')
  3. image2 = Image.open('image2.jpg')
  4. # 假设两个图像的宽度相同,可以按垂直方向拼接
  5. combined_image = Image.new('RGB', (image1.width, image1.height + image2.height))
  6. combined_image.paste(image1, (0, 0))
  7. combined_image.paste(image2, (0, image1.height))
  8. combined_image.show()
复制代码
9.2 图像混淆

利用 Image.blend() 方法将两个图像进行混淆。
  1. # 混合两个图像
  2. image1 = Image.open('image1.jpg')
  3. image2 = Image.open('image2.jpg')
  4. blended_image = Image.blend(image1, image2, alpha=0.5)
  5. blended_image.show()
复制代码
这里的 alpha 参数控制图像混淆的水平,值越大,image2 的影响越大。

10. 进阶功能

10.1 处理惩罚透明度

通过 RGBA 模式,你可以处理惩罚图像的透明度。A 表现透明度通道(Alpha)。
  1. # 创建透明背景图像
  2. image = Image.new("RGBA", (400, 400), (255, 255, 255, 0))
  3. image.show()
复制代码
10.2 动画图像

Pillow 也支持 GIF 动画的创建和操作。
  1. # 加载 GIF 动画
  2. gif = Image.open("animation.gif")
  3. # 获取 GIF 的帧数
  4. frames = gif.n_frames
  5. # 显示 GIF 中的所有帧
  6. for frame in range(frames):
  7.     gif.seek(frame)
  8.     gif.show()
复制代码

11. 总结

Pillow 是一个功能强大的图像处理惩罚库,提供了大量的图像操作方法。通过本教程,你学习了如何:


  • 打开、表现、保存图像
  • 改变图像大小、裁剪、旋转和翻转
  • 利用图像滤镜和调整图像颜色
  • 在图像上绘制文本、线条和形状
  • 合成图像和处理惩罚透明度
你可以根据自己的需求,结合这些功能,创建更加复杂的图像处理惩罚应用。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

星球的眼睛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表