/exiftools

Image Exif, MakerNote and XMP metadata tools in Golang

Primary LanguageGoBSD 2-Clause "Simplified" LicenseBSD-2-Clause

Exif Tools

License Godoc ReportCard Coverage Status Build

Provides decoding of basic exif and tiff encoded data.

Suggestions and pull requests are welcome.

Example usage:

package main

import (
   "fmt"
   "log"
   "os"
   "github.com/evanoberholster/exif/exif"
   "github.com/evanoberholster/exif/mknote"
)

func ExampleDecode() {
    fname := "sample1.jpg"

    f, err := os.Open(fname)
    if err != nil {
        log.Fatal(err)
    }

    // Optionally register camera makenote data parsing - currently Nikon and
    // Canon are supported.
    exif.RegisterParsers(mknote.All...)

    x, err := exif.Decode(f)
    if err != nil {
        log.Fatal(err)
    }

    camModel, _ := x.Get(exif.Model) // normally, don't ignore errors!
    fmt.Println(camModel.StringVal())

    focal, _ := x.Get(exif.FocalLength)
    numer, denom, _ := focal.Rat2(0) // retrieve first (only) rat. value
    fmt.Printf("%v/%v", numer, denom)

    // Two convenience functions exist for date/time taken and GPS coords:
    tm, _ := x.DateTime()
    fmt.Println("Taken: ", tm)

    lat, long, _ := x.LatLong()
    fmt.Println("lat, long: ", lat, ", ", long)
}

Based On

Based on https://github.com/rwcarlsen/goexif

Inspired by https://github.com/dsoprea/go-exif

LICENSE

Copyright (c) 2019, Evan Oberholster & Contributors

Copyright (c) 2016, Jerry Jacobs & Contributors

Copyright (c) 2012, Robert Carlsen & Contributors