如何使用 Python 的 PIL 从 URL 打开图像?

2025年3月13日 | 阅读 4 分钟

在下面的教程中,我们将学习如何使用 Python 图像处理库 (PIL) 从 URL 打开图像。但在开始之前,让我们简要了解一下 PIL 是什么。

什么是 Python 图像处理库 (PIL)?

Python 图像处理库,简称 PIL,是一个 Python 库,它提供了处理 Python 解释器中图像的能力。但是,原始的 PIL 库已不再积极维护,因此,Pillow 库现在是 Python 中图像处理的首选库,它是 PIL 的一个分支,至今仍积极开发和维护。

PIL/Pillow 提供了广泛的图像处理功能,包括:

  1. 图像加载和保存: PIL/Pillow 允许您从各种格式加载图像,包括 JPEG、PNG、BMP、GIF 等。它还提供将这些格式的图像保存为这些格式的功能。
  2. 图像操作:您可以执行各种图像操作,例如调整大小、裁剪、旋转、翻转以及使用滤镜,如模糊、锐化和灰度。
  3. 图像增强: PIL/Pillow 有助于图像增强策略,如对比度调整、亮度调整和色彩平衡。
  4. 图像绘制:它允许您绘制图像,添加文本、线条、形状和注释。
  5. 图像处理:PIL/Pillow 提供了基本图像处理功能,例如在颜色模式(RGB、CMYK、灰度)之间转换、处理透明度(Alpha 通道)和应用更改。
  6. 图像分析:您可以执行基本的图像分析任务,包括提取图像细节,如大小、布局和元数据。

Python 图像处理库 (PIP) 的一些特性

以下是 PIL/Pillow 的一些特性:

  1. 跨平台:PIL/Pillow 可在 Windows、macOS 和 Linux 等不同平台上无缝运行。
  2. 易于使用:它提供了一个可靠且易于使用的 API 来处理各种图像处理任务,使其对初学者和经验丰富的开发人员都易于访问。
  3. 广泛的格式支持:PIL/Pillow 支持多种图像格式,确保与您遇到的绝大多数图像文件兼容。
  4. 可扩展:可以轻松地使用其他功能或自定义图像处理算法来扩展 PIL/Pillow。
  5. 活跃的社区:尽管 PIL 不再维护,但 Pillow 拥有一个活跃的开发人员和用户社区,他们为其改进做出贡献并提供支持。
  6. 集成:Pillow 与其他 Python 库和框架集成良好,使其适用于许多应用程序,包括 Web 开发、数据分析、计算机视觉等。

使用 PIL 从 URL 打开图像的不同方法

在下一节中,我们将讨论使用 Python 编程语言中的 PIL/Pillow 从给定 URL 打开图像的不同方法。

方法 1:使用 `urllib` 模块

Python 中的 `urllib` 模块允许打开 URL 并处理从中检索的数据。在此方法中,我们使用 `urllib.request.urlopen()` 从 URL 获取图像数据,然后使用 PIL 打开它。

示例

输出

How to Open an Image from the URL using PIL in Python?

说明

  • 导入必要的模块:`urllib.request` 用于获取图像数据,以及 PIL 中的 `Image`。
  • 定义图像的 URL (`url`)。
  • 使用 `urllib.request.urlopen(url).read()` 从 URL 获取图像数据并将其存储在 `image_data` 中。
  • 通过传递图像数据 (`image_data`) 使用 `Image.open()` 打开图像。

方法 2:使用 `requests` 模块

`requests` 模块是 Python 中用于发出 HTTP 请求的流行库。在此方法中,我们使用 `requests.get()` 从 URL 获取图像数据,然后使用 PIL 打开它。

示例

输出

How to Open an Image from the URL using PIL in Python?

说明

  • 导入必要的模块:`requests` 用于获取图像数据,PIL 中的 `Image`,以及 `io` 中的 `BytesIO`。
  • 定义图像的 URL (`url`)。
  • 使用 `requests.get(url)` 从 URL 获取图像数据并将响应存储在 `response` 中。
  • 通过将 `BytesIO` 包装的图像数据 (`response.content`) 传递给 `Image.open()` 来打开图像。

方法 3:使用 `io` 模块

Python 中的 `io` 模块提供了处理 I/O 流的功能。在此技术中,我们使用 `io.BytesIO` 来处理二进制数据并使用 PIL 打开图像。

示例

输出

How to Open an Image from the URL using PIL in Python?

说明

  • 导入必要的模块:PIL 中的 `Image`,`requests` 用于获取图像数据,以及 `io` 用于处理二进制数据。
  • 定义图像的 URL (`url`)。
  • 使用 `requests.get(url)` 从 URL 获取图像数据并将响应存储在 `response` 中。
  • 使用 `io.BytesIO(response.content)` 从图像数据创建一个二进制数据流。
  • 通过传递二进制数据流 (`image_data`) 使用 `Image.open()` 打开图像。