• 技术文章 >后端开发 >Python教程

    Python读取图片EXIF信息类库介绍和使用实例

    2016-06-16 08:43:18原创1254
    首先要介绍的是 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)

    其他类库请自行研究。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• python虚拟环境配置与管理• 一文搞懂怎么在python中读取和写入CSV文件• 总结分享Python冷门的技巧• 一文搞懂Python爬虫解析器BeautifulSoup4• Python爬虫超详细讲解
    1/1

    PHP中文网