如何使用 Python 查找图像的宽度和高度?

2025年1月5日 | 阅读6分钟

图像尺寸简介

在我们处理代码之前,让我们先定义一下图像“尺寸”对我们意味着什么。简而言之,图像是一组像素,每个像素代表一小块颜色。图像的宽度是每列的像素数,而高度则涉及行数。

在 Python 中,有几种库和方法可以计算图像的宽度和高度。让我们来探索其中的一些。

使用的库

1. Pillow (PIL)

  • 目的: Pillow 是 Python 图像处理库 (PIL) 最先进且用户友好的分支,提供了各种图像处理功能。
  • 安装: 可以通过运行以下命令来安装 Pillow

2. OpenCV

  • 目的: OpenCV (Open-Source Computer Vision Library) 是广泛用于计算机视觉和图像处理操作的库之一。
  • 安装: 要安装 Opencv,请运行以下命令

3. imageio

  • 目的: imageio 在简单的界面下读取和写入不同格式的图像。
  • 安装: 安装 imageio 的命令是

4. NumPy

  • 目的: Python 中的科学计算包含一些旨在保证数组操作的基本包,而 NumPy 是其中一个包。
  • 安装: 为了安装 NumPy,我们使用以下命令

我们已经了解了用于查找图像尺寸的库,现在我们将了解查找图像尺寸所需的模块。

所需的模块

1. Imghdr 模块: 'imghdr' 模块是 Python 标准库的一个子集。

  • 目的: 它用于从图像文件的头部识别其类型。
  • 函数: 要确定图像的类型,使用 'imghdr.what (filename h=None)' 函数。如果识别出图像,它会以字符串形式返回 'jpeg'、'png' 或 'gif',否则返回 'None'。

2. Struct 模块: 'struct' 模块也是 Python 的标准库。

  • 目的: 它用于处理打包的二进制数据。
  • 函数: 使用 'struct.unpack(format, buffer)' 函数从指定格式解包二进制数据。它返回从缓冲区提取的值的元组。

让我们来看每个库的示例

1. 使用 PIL (Pillow) 库

让我们使用下面的图像来找出高度和宽度。

How to Find the Width and Height of an Image Using Python

输出

Width: 235px, Height: 350px

说明

  • 从 Python 图像处理库 (PIL) 中导入 'Image' 类。
  • 使用 'Image.open' 方法打开名为 'example.jpg' 的图像文件。
  • 使用 size 属性获取图像尺寸(宽度和高度)。
  • 为变量 'width' 和 'height' 设置宽度和高度值。
  • 使用带有 f-string 的 print 语句打印以像素为单位的图像尺寸。

2. 使用 OpenCV 库

让我们使用下面的图像来找出高度和宽度。

How to Find the Width and Height of an Image Using Python

输出

Width: 232px, Height: 265px

说明

  • 导入 'OpenCV' 并将其命名为 cv2。
  • 使用 'cv2.imread' 打开图像 'ss.jpeg'
  • 使用 'img.shape' 从图像获取尺寸。
  • 将 'width' 和 'height' 分别分配给变量 width 和 height。
  • 使用带有 f-string 的 print 语句显示宽度和高度。

3. 使用 imageio 库

How to Find the Width and Height of an Image Using Python

输出

Width: 250px, Height: 350px

说明

  • 导入 'imageio' 进行图像处理。
  • 使用 'imageio.imread' 读取图像。
  • 使用 'img.shape' 获取尺寸(宽度、高度和通道)。
  • width 和 height 应分配给变量 'width' 和 'height'。
  • 使用带有 f-string 的 print 语句提供打印尺寸,显示以像素为单位的宽度和高度。

4. 使用 NumPy 库

让我们使用下面的图像来找出高度和宽度。

How to Find the Width and Height of an Image Using Python

输出

Width: 234px, Height: 243px

说明

  • 将 NumPy 库导入为 np,并将图像类从 PIL 导入。
  • 使用 'Image.open' 打开图像文件 ('ss .jpeg')。
  • 使用 array(img) 将图像转换为 NumPy 数组。
  • 使用 'img_array.shape' 提取尺寸。
  • 为变量 width 和 height 赋值。
  • 使用 print 打印带有 f-string 的打印尺寸(以像素为单位)。

5. 使用 imghrd 模块

让我们使用下面的图像来找出高度和宽度。

How to Find the Width and Height of an Image Using Python

输出

Width: 230px, Height: 243px

说明

  • 导入 'imghdr''struct' 模块来处理图像。
  • 创建 'get_image_dimensions' 函数,该函数有一个文件路径参数。
  • 使用 'imghdr.what' 确定文件是否为图像。
  • 使用 open(file_path, 'rb') 以二进制模式读取文件。
  • 从图像的前 24 字节确定图像的尺寸。
  • 对于 JPEG 图像,解析头部结构以获取宽度和高度。
  • 对于 PNG 图像,直接从头部可预测的位置读取宽度和高度。
  • 对于 GIF 图像,从头部的一个简单位置获取宽度和高度。
  • 使用 'struct.error' 来处理头部解析过程中可能出现的错误。
  • 为了演示该函数,获取示例图像 'ss.jpeg' 的尺寸。
  • 使用带有 f-string 的 print 语句显示以像素为单位的图像尺寸。
  • 如果文件不是图像,则打印一条消息。
  • 该脚本是动态的,因为它通过评估头部来确定图像的大小,并为不同类型的图像留有余地。

结论

在这份全面的指南中,我们讨论了在 Python 中确定图像宽度和高度的各种技术。您可以根据您的需求和可用的库来选择最适合您的方法。

如果您喜欢 Pillow 的简单性、OpenCV 和 imageio 提供的灵活性,或者甚至是通过 imghdr 进行头部分析,Python 都为图像处理任务提供了丰富的生态系统。在决定时,请选择符合您项目目标并考虑时间、内存消耗和兼容性等因素的选项。

随着技术的不断发展,可能会出现新的库和算法;请随时了解 Python 在图像处理方面的最新进展。有了这些信息,您将能够自信地在 Python 项目中处理涉及图像的任务。