Imghdr:轻量级判断图像文件类型

2024-05-08 09:48:30 浏览数 (2)

我们可能很少遇到需要判断图片类型的情况,因为通过扩展名一下子就判断出来了,但是从网上大量的下载图片,将它们作为机器学习的材料时,可能会遇到大量的图片只有数据没有扩展名的情况,为了将图片信息标准化,你就需要确定每一张图片数据的类型,到底是 jpg、png 还是 bmp 呢? 遇到这种状况,该怎么办呢?去一个个尝试不同的软件打开吗?显然不是个事儿。你可能想通过解读文件信息来确定,请先别忙,让 imghdr 上!

imghdr,打开每张图片的神秘面纱

imghdr 是 Python 的标准库之一,用于确定一个文件是支持的图像类型之一。 这个模块会根据文件内容的前几个字节来猜测文件的格式,大部分情况下,都能够正确识别。 imghdr 模块在 Python 中出现的时间非常久远,虽然它不像一些流行的第三方库那般有名,但它在许多实际应用程序中仍然在默默地发挥作用。 比如 imghdr 和一些别的第三方图像处理库比如 Pillow[1] 相比,它更轻量级,更专注于判定图像类型。 如果你不需要复杂的图像处理功能,而只是想要判断出图像文件的类型,imghdr 是一个更快更方便的选择。 imghdr 模块支持所有现代的 Python 3 版本。

图片类型的检测

使用 imghdr 来识别图像类型非常简单,仅需要一两行代码。来看看基本的使用方法吧!

代码语言:javascript复制
import imghdr

# 假设我们有一个名为  mysterious_image  的图像文件 
image_type = imghdr.what('mysterious_image')

# 输出图像的类型 
print(f"This image is of type: {image_type}")

imghdr.what() 函数接受图像文件的路径作为参数,返回文件的格式,如果无法识别,则返回 None。

支持的图像格式

imghdr 模块可以识别许多常见的图像格式,包括但不限于 gif, png, jpeg, bmp, tiff 等。目前支持的类型有:

图片类型

rgb

SGI ImgLib Files

gif

GIF 87a and 89a Files

pbm

Portable Bitmap Files

pgm

Portable Graymap Files

ppm

Portable Pixmap Files

tiff

TIFF Files

rast

Sun Raster Files

xbm

X Bitmap Files

jpeg

JPEG data in JFIF or Exif formats

bmp

BMP files

png

Portable Network Graphics

webp

WebP files

exr

OpenEXR Files

动手试试

为了让理论知识更加实践,你可以尝试以下练习:

  1. 抓取不同格式的图片到你的工作目录中。
  2. 编写一个脚本,使用 imghdr 模块来检测这些图片的格式。
  3. 遍历某一个目录,输出该目录下所有图像文件的类型。

通过这些简单的练习,你可以快速掌握 imghdr 的使用,并能在日常工作中发挥它的威力。

总结

imghdr 是一个在处理图像类文件时不可或缺的小工具。虽然它的功能相对单一,但正是这种专注使得它小巧而精致。在需要辨识图像类型时,它将是你代码工具箱中的一件利器。 当你下一次遇到无法识别图像类型的文件时,不妨让 imghdr 来揭开图片文件的神秘面纱。

0 人点赞