📜  Python程序来查找图像的大小(分辨率)

📅  最后修改于: 2020-09-21 02:26:58             🧑  作者: Mango

在此示例中,您将学习如何找到jpeg图像的分辨率,而无需使用外部库

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

大多数文件格式都有标头(最初为几个字节),这些标头包含有关文件的有用信息。

例如,jpeg标头包含高度,宽度,颜色数(灰度或RGB)等信息。在此程序中,我们无需使用任何外部库就可以找到读取这些标头的jpeg图像的分辨率。

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

def jpeg_res(filename):
   """"This function prints the resolution of the jpeg image file passed into it"""

   # open image for reading in binary mode
   with open(filename,'rb') as img_file:

       # height of image (in 2 bytes) is at 164th position
       img_file.seek(163)

       # read the 2 bytes
       a = img_file.read(2)

       # calculate height
       height = (a[0] << 8) + a[1]

       # next 2 bytes is width
       a = img_file.read(2)

       # calculate width
       width = (a[0] << 8) + a[1]

   print("The resolution of the image is",width,"x",height)

jpeg_res("img1.jpg")

输出

The resolution of the image is 280 x 280

在此程序中,我们以二进制模式打开了图像。非文本文件必须在此模式下打开。图像的高度在第164位,然后是图像的宽度。两者均为2个字节长。

请注意,这仅适用于JPEG文件交换格式(JFIF)标准。如果您的图像是使用其他标准(例如EXIF)编码的,则该代码将无效。

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