如何在Python(Windows)中提取图像文件的详细信息?

时间:2015-04-07 16:26:16

标签: python windows

我正在编写一个必须处理多个图像的程序。他们中的许多人有不同的分辨率(dpi)。有没有办法从文件属性中检索信息?我尝试了PIL.ExifTags,PIL.IptcImagePlugin,其他EXIF提取器,但一切都返回None。the information I need to retrieve

1 个答案:

答案 0 :(得分:1)

如果它无法通过exif工具从jpeg获取dpi,则jpeg可能没有exif并且可能具有JFIF(APP0元数据)。它可以从JFIF获得dpi。

def get_resolution(filename):
    with open(filename, "rb") as f:
        data = f.read()
    if data[0:2] != b"\xff\xd8":
        raise ValueError("Not JPEG.")
    if data[2:4] != b"\xff\xe0":
        return None
    else:
        if data[13] == b"\x00":
            unit = "no unit"
        elif data[13] == b"\x01":
            unit = "dpi"
        elif data[13] == b"\x02":
            unit = "dpcm"
        else:
            raise ValueError("Bad JFIF")
        x = 256 * ord(data[14]) + ord(data[15])
        y = 256 * ord(data[16]) + ord(data[17])
    return {"unit":unit, "resolution":(x, y)}