Python读取图片EXIF信息类库介绍

发布时间:2019-08-28 09:14:06编辑:auto阅读(1575)

    这篇文章主要介绍了Python读取图片EXIF信息类库介绍和使用实例,例如Python Imaging Library、EXIF.py等,需要的朋友可以参考下

    首先要介绍的是 Python Imaging Library,使用方法如下:

    复制代码代码如下:

    from PIL import Image
    from PIL.ExifTags import TAGS

    def get_exif_data(fname):
        """Get embedded EXIF data from image file."""
        ret = {}
        try:
            img = Image.open(fname)
            if hasattr( img, '_getexif' ):
                exifinfo = img._getexif()
                if exifinfo != None:
                    for tag, value in exifinfo.items():
                        decoded = TAGS.get(tag, tag)
                        ret[decoded] = value
        except IOError:
            print 'IOERROR ' + fname
        return ret

    if __name__ == '__main__':
        fileName = 'C:/Users/Leyond/Desktop/IMG_20121122_153514.jpg'
        exif = get_exif_data(fileName)
        print exif


    返回的清单如下:

    复制代码代码如下:

    ExifVersion
    ComponentsConfiguration
    ExifImageWidth
    DateTimeOriginal
    DateTimeDigitized
    ExifInteroperabilityOffset
    FlashPixVersion
    MeteringMode
    LightSource
    Flash
    FocalLength
    41986
    ImageDescription
    Make
    Model
    Orientation
    YCbCrPositioning
    41988
    XResolution
    YResolution
    59932
    ExposureTime
    ExposureProgram
    ColorSpace
    41990
    ISOSpeedRatings
    ResolutionUnit
    41987
    FNumber
    Software
    DateTime
    ExifImageHeight
    ExifOffset

    其中59932,是一大串十六进制的字符,不知为啥。除了PIL之外,还有许多类库可供使用:

    Media Metadata for Python

    EXIF.py

    Python Exif Parser

    A Blogger's Exif Parser

    pyexiv2


    接着看EXIF.PY,使用方法非常简单:exif.py IMG_20121122_153514.jpg

    复制代码代码如下:

    EXIF ColorSpace (Short): sRGB
    EXIF ComponentsConfiguration (Undefined): YCbCr
    EXIF DateTimeDigitized (ASCII): 2012:11:22 15:35:14
    EXIF DateTimeOriginal (ASCII): 2012:11:22 15:35:14
    EXIF DigitalZoomRatio (Ratio): 1
    EXIF ExifImageLength (Long): 2560
    EXIF ExifImageWidth (Long): 1920
    EXIF ExifVersion (Undefined): 0220
    EXIF ExposureBiasValue (Signed Ratio): 0
    EXIF ExposureMode (Short): Auto Exposure
    EXIF ExposureProgram (Short): Portrait Mode
    EXIF ExposureTime (Ratio): 1/256
    EXIF FNumber (Ratio): 14/5
    EXIF Flash (Short): Flash did not fire
    EXIF FlashPixVersion (Undefined): 0100
    EXIF FocalLength (Ratio): 35
    EXIF ISOSpeedRatings (Short): 56
    EXIF InteroperabilityOffset (Long): 4810
    EXIF LightSource (Short): other light source
    EXIF MeteringMode (Short): CenterWeightedAverage
    EXIF Padding (Undefined): []
    EXIF SceneCaptureType (Short): Portrait
    EXIF WhiteBalance (Short): Auto
    Image DateTime (ASCII): 2012:11:24 09:44:50
    Image ExifOffset (Long): 2396
    Image ImageDescription (ASCII):
    Image Make (ASCII):
    Image Model (ASCII):
    Image Orientation (Short): Horizontal (normal)
    Image Padding (Undefined): []
    Image ResolutionUnit (Short): Pixels/Inch
    Image Software (ASCII): Microsoft Windows Photo Viewer 6.1.7600.16385
    Image XResolution (Ratio): 72
    Image YCbCrPositioning (Short): Co-sited
    Image YResolution (Ratio): 72
    Thumbnail Compression (Short): JPEG (old-style)
    Thumbnail JPEGInterchangeFormat (Long): 4970
    Thumbnail JPEGInterchangeFormatLength (Long): 3883
    Thumbnail Orientation (Short): Horizontal (normal)
    Thumbnail ResolutionUnit (Short): Pixels/Inch
    Thumbnail XResolution (Ratio): 72
    Thumbnail YCbCrPositioning (Short): Co-sited
    Thumbnail YResolution (Ratio): 72

    至于Python Exif Parser,好像没更新很久了,使用方法也很类似:

    复制代码代码如下:

    import exif
    photo_path = "somePath\to\a\photo.jpg"
    data = exif.parse(photo_path)

    其他类库请自行研究。

关键字