跳到主要内容

Python 程序找出图像的大小(分辨率)

要理解这个示例,你需要了解以下Python编程主题的知识:

JPEG(发音为"jay-peg")代表联合摄影专家小组。它是最广泛使用的图像压缩技术之一。

大多数文件格式都有头部(最初的几个字节),其中包含有关文件的有用信息。

例如,jpeg头部包含像高度、宽度、颜色数(灰度或RGB)等信息。在这个程序中,我们通过读取这些头部信息,而不使用任何外部库,来找到jpeg图像的分辨率。

查找JPEG图像分辨率的源代码

def jpeg_res(filename):
"""这个函数打印传入的jpeg图像文件的分辨率"""

# 以二进制模式打开图像进行读取
with open(filename,'rb') as img_file:

# 图像高度(2字节)在第164个位置
img_file.seek(163)

# 读取2个字节
a = img_file.read(2)

# 计算高度
height = (a[0] << 8) + a[1]

# 接下来的2个字节是宽度
a = img_file.read(2)

# 计算宽度
width = (a[0] << 8) + a[1]

print("图像的分辨率为", width, "x", height)

jpeg_res("img1.jpg")

输出

图像的分辨率为 280 x 280

在这个程序中,我们以二进制模式打开了图像。非文本文件必须以这种模式打开。图像的高度位于第164个位置,紧随其后的是图像的宽度。它们都是2字节长。

请注意,这只适用于JPEG文件交换格式(JFIF)标准。如果您的图像使用其他标准(如EXIF)编码,则此代码将不起作用。

我们使用位移运算符<<将2个字节转换为一个数字。最后,显示分辨率。