summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/rwcarlsen/goexif
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/rwcarlsen/goexif')
-rw-r--r--vendor/github.com/rwcarlsen/goexif/.gitignore23
-rw-r--r--vendor/github.com/rwcarlsen/goexif/README.md71
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/corrupt/huge_tag_exif.jpgbin0 -> 65536 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/corrupt/infinite_loop_exif.jpgbin0 -> 3738 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/corrupt/max_uint32_exif.jpgbin0 -> 65536 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/example_test.go42
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/exif_test.go202
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/regress_expected_test.go2293
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2004-01-11-22-45-15-sep-2004-01-11-22-45-15a.jpgbin0 -> 4586 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2006-08-03-16-29-38-sep-2006-08-03-16-29-38a.jpgbin0 -> 9735 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2006-11-11-19-17-56-sep-2006-11-11-19-17-56a.jpgbin0 -> 35406 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2006-12-10-23-58-20-sep-2006-12-10-23-58-20a.jpgbin0 -> 8711 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2006-12-17-07-09-14-sep-2006-12-17-07-09-14a.jpgbin0 -> 38252 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2006-12-21-15-55-26-sep-2006-12-21-15-55-26a.jpgbin0 -> 16072 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2007-01-01-12-00-00-sep-2007-01-01-12-00-00a.jpgbin0 -> 17301 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2007-01-17-21-49-44-sep-2007-01-17-21-49-44a.jpgbin0 -> 7999 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2007-02-02-18-13-29-sep-2007-02-02-18-13-29a.jpgbin0 -> 39915 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-02-17-02-21-sep-2007-05-02-17-02-21a.jpgbin0 -> 11783 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-12-08-19-07-sep-2007-05-12-08-19-07a.jpgbin0 -> 35771 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-26-04-49-45-sep-2007-05-26-04-49-45a.jpgbin0 -> 35406 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-30-14-28-01-sep-2007-05-30-14-28-01a.jpgbin0 -> 35406 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2007-06-06-16-15-25-sep-2007-06-06-16-15-25a.jpgbin0 -> 35406 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2007-06-26-10-13-04-sep-2007-06-26-10-13-04a.jpgbin0 -> 7615 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2007-07-13-17-02-30-sep-2007-07-13-17-02-30a.jpgbin0 -> 21719 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2007-08-15-14-42-46-sep-2007-08-15-14-42-46a.jpgbin0 -> 11549 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2007-08-24-02-40-42-sep-2007-08-24-02-40-42a.jpgbin0 -> 7687 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2007-11-07-11-40-44-sep-2007-11-07-11-40-44a.jpgbin0 -> 11223 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2008-06-02-10-03-57-sep-2008-06-02-10-03-57a.jpgbin0 -> 9745 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2008-06-06-13-29-29-sep-2008-06-06-13-29-29a.jpgbin0 -> 11783 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2008-06-17-01-21-30-sep-2008-06-17-01-21-30a.jpgbin0 -> 14564 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2008-09-02-17-43-48-sep-2008-09-02-17-43-48a.jpgbin0 -> 5406 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2009-03-26-09-23-20-sep-2009-03-26-09-23-20a.jpgbin0 -> 10759 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2009-04-11-03-01-38-sep-2009-04-11-03-01-38a.jpgbin0 -> 43374 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2009-04-23-07-21-35-sep-2009-04-23-07-21-35a.jpgbin0 -> 37208 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2009-06-11-19-23-18-sep-2009-06-11-19-23-18a.jpgbin0 -> 7791 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2009-06-20-07-59-05-sep-2009-06-20-07-59-05a.jpgbin0 -> 13618 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2009-08-05-08-11-31-sep-2009-08-05-08-11-31a.jpgbin0 -> 9919 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2010-06-08-04-44-24-sep-2010-06-08-04-44-24a.jpgbin0 -> 10939 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2010-06-20-20-07-39-sep-2010-06-20-20-07-39a.jpgbin0 -> 8551 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2010-09-02-08-43-02-sep-2010-09-02-08-43-02a.jpgbin0 -> 19534 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2011-01-24-22-06-02-sep-2011-01-24-22-06-02a.jpgbin0 -> 29003 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2011-03-07-09-28-03-sep-2011-03-07-09-28-03a.jpgbin0 -> 10529 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2011-05-07-13-02-49-sep-2011-05-07-13-02-49a.jpgbin0 -> 23743 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2011-08-07-19-22-57-sep-2011-08-07-19-22-57a.jpgbin0 -> 9936 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2011-10-28-17-50-18-sep-2011-10-28-17-50-18a.jpgbin0 -> 7487 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2011-10-28-18-25-43-sep-2011-10-28-18-25-43.jpgbin0 -> 7433 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2011-11-18-15-38-34-sep-Photo11181538.jpgbin0 -> 12885 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2012-06-02-10-12-28-sep-2012-06-02-10-12-28.jpgbin0 -> 32165 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2012-09-21-22-07-34-sep-2012-09-21-22-07-34.jpgbin0 -> 10247 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2012-12-19-21-38-40-sep-temple_square1.jpgbin0 -> 39182 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2012-12-21-11-15-19-sep-IMG_0001.jpgbin0 -> 25269 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2013-02-05-23-12-09-sep-DSCI0001.jpgbin0 -> 10854 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2099-08-12-19-59-29-sep-2099-08-12-19-59-29a.jpgbin0 -> 37491 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/2216-11-15-11-46-51-sep-2216-11-15-11-46-51a.jpgbin0 -> 23011 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/FailedHash-NoDate-sep-remembory.jpgbin0 -> 935 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/f1-exif.jpgbin0 -> 992 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/f2-exif.jpgbin0 -> 994 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/f3-exif.jpgbin0 -> 992 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/f4-exif.jpgbin0 -> 994 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/f5-exif.jpgbin0 -> 980 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/f6-exif.jpgbin0 -> 982 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/f7-exif.jpgbin0 -> 980 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/f8-exif.jpgbin0 -> 982 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/geodegrees_as_string.jpgbin0 -> 22420 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exif/samples/has-lens-info.jpgbin0 -> 22493 bytes
-rw-r--r--vendor/github.com/rwcarlsen/goexif/exifstat/main.go60
-rw-r--r--vendor/github.com/rwcarlsen/goexif/mknote/fields.go268
-rw-r--r--vendor/github.com/rwcarlsen/goexif/mknote/mknote.go70
-rw-r--r--vendor/github.com/rwcarlsen/goexif/tiff/tiff_test.go235
69 files changed, 3264 insertions, 0 deletions
diff --git a/vendor/github.com/rwcarlsen/goexif/.gitignore b/vendor/github.com/rwcarlsen/goexif/.gitignore
new file mode 100644
index 000000000..3866bbf31
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/.gitignore
@@ -0,0 +1,23 @@
+# Compiled Object files, Static and Dynamic libs (Shared Objects)
+*.o
+*.a
+*.so
+*.sw*
+
+# Folders
+_obj
+_test
+
+# Architecture specific extensions/prefixes
+*.[568vq]
+[568vq].out
+
+*.cgo1.go
+*.cgo2.c
+_cgo_defun.c
+_cgo_gotypes.go
+_cgo_export.*
+
+_testmain.go
+
+*.exe
diff --git a/vendor/github.com/rwcarlsen/goexif/README.md b/vendor/github.com/rwcarlsen/goexif/README.md
new file mode 100644
index 000000000..8b815a0fd
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/README.md
@@ -0,0 +1,71 @@
+goexif
+======
+
+Provides decoding of basic exif and tiff encoded data. Still in alpha - no guarantees.
+Suggestions and pull requests are welcome. Functionality is split into two packages - "exif" and "tiff"
+The exif package depends on the tiff package.
+Documentation can be found at http://godoc.org/github.com/rwcarlsen/goexif
+
+Like goexif? - Bitcoin tips welcome: 17M7LFh3ETz4bz83VikB7xuGQskt8K5Lj4
+
+To install, in a terminal type:
+
+```
+go get github.com/rwcarlsen/goexif/exif
+```
+
+Or if you just want the tiff package:
+
+```
+go get github.com/rwcarlsen/goexif/tiff
+```
+
+Example usage:
+
+```go
+package main
+
+import (
+ "fmt"
+ "log"
+ "os"
+
+ "github.com/rwcarlsen/goexif/exif"
+ "github.com/rwcarlsen/goexif/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)
+}
+```
+
+<!--golang-->
+[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/5e166f74cdb82b999ccd84e3c4dc4348 "githalytics.com")](http://githalytics.com/rwcarlsen/goexif)
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/corrupt/huge_tag_exif.jpg b/vendor/github.com/rwcarlsen/goexif/exif/corrupt/huge_tag_exif.jpg
new file mode 100644
index 000000000..ffb31743d
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/corrupt/huge_tag_exif.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/corrupt/infinite_loop_exif.jpg b/vendor/github.com/rwcarlsen/goexif/exif/corrupt/infinite_loop_exif.jpg
new file mode 100644
index 000000000..6b0994713
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/corrupt/infinite_loop_exif.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/corrupt/max_uint32_exif.jpg b/vendor/github.com/rwcarlsen/goexif/exif/corrupt/max_uint32_exif.jpg
new file mode 100644
index 000000000..2a51b0ba0
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/corrupt/max_uint32_exif.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/example_test.go b/vendor/github.com/rwcarlsen/goexif/exif/example_test.go
new file mode 100644
index 000000000..45fd5d4ad
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/example_test.go
@@ -0,0 +1,42 @@
+package exif_test
+
+import (
+ "fmt"
+ "log"
+ "os"
+
+ "github.com/rwcarlsen/goexif/exif"
+ "github.com/rwcarlsen/goexif/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)
+}
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/exif_test.go b/vendor/github.com/rwcarlsen/goexif/exif/exif_test.go
new file mode 100644
index 000000000..c53f1ddda
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/exif_test.go
@@ -0,0 +1,202 @@
+package exif
+
+//go:generate go run regen_regress.go -- regress_expected_test.go
+//go:generate go fmt regress_expected_test.go
+
+import (
+ "flag"
+ "fmt"
+ "math"
+ "os"
+ "path/filepath"
+ "strings"
+ "testing"
+
+ "github.com/rwcarlsen/goexif/tiff"
+)
+
+var dataDir = flag.String("test_data_dir", ".", "Directory where the data files for testing are located")
+
+func TestDecode(t *testing.T) {
+ fpath := filepath.Join(*dataDir, "samples")
+ f, err := os.Open(fpath)
+ if err != nil {
+ t.Fatalf("Could not open sample directory '%s': %v", fpath, err)
+ }
+
+ names, err := f.Readdirnames(0)
+ if err != nil {
+ t.Fatalf("Could not read sample directory '%s': %v", fpath, err)
+ }
+
+ cnt := 0
+ for _, name := range names {
+ if !strings.HasSuffix(name, ".jpg") {
+ t.Logf("skipping non .jpg file %v", name)
+ continue
+ }
+ t.Logf("testing file %v", name)
+ f, err := os.Open(filepath.Join(fpath, name))
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ x, err := Decode(f)
+ if err != nil {
+ t.Fatal(err)
+ } else if x == nil {
+ t.Fatalf("No error and yet %v was not decoded", name)
+ }
+
+ t.Logf("checking pic %v", name)
+ x.Walk(&walker{name, t})
+ cnt++
+ }
+ if cnt != len(regressExpected) {
+ t.Errorf("Did not process enough samples, got %d, want %d", cnt, len(regressExpected))
+ }
+}
+
+type walker struct {
+ picName string
+ t *testing.T
+}
+
+func (w *walker) Walk(field FieldName, tag *tiff.Tag) error {
+ // this needs to be commented out when regenerating regress expected vals
+ pic := regressExpected[w.picName]
+ if pic == nil {
+ w.t.Errorf(" regression data not found")
+ return nil
+ }
+
+ exp, ok := pic[field]
+ if !ok {
+ w.t.Errorf(" regression data does not have field %v", field)
+ return nil
+ }
+
+ s := tag.String()
+ if tag.Count == 1 && s != "\"\"" {
+ s = fmt.Sprintf("[%s]", s)
+ }
+ got := tag.String()
+
+ if exp != got {
+ fmt.Println("s: ", s)
+ fmt.Printf("len(s)=%v\n", len(s))
+ w.t.Errorf(" field %v bad tag: expected '%s', got '%s'", field, exp, got)
+ }
+ return nil
+}
+
+func TestMarshal(t *testing.T) {
+ name := filepath.Join(*dataDir, "sample1.jpg")
+ f, err := os.Open(name)
+ if err != nil {
+ t.Fatalf("%v\n", err)
+ }
+ defer f.Close()
+
+ x, err := Decode(f)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if x == nil {
+ t.Fatal("bad err")
+ }
+
+ b, err := x.MarshalJSON()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ t.Logf("%s", b)
+}
+
+func testSingleParseDegreesString(t *testing.T, s string, w float64) {
+ g, err := parseTagDegreesString(s)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if math.Abs(w-g) > 1e-10 {
+ t.Errorf("Wrong parsing result %s: Want %.12f, got %.12f", s, w, g)
+ }
+}
+
+func TestParseTagDegreesString(t *testing.T) {
+ // semicolon as decimal mark
+ testSingleParseDegreesString(t, "52,00000,50,00000,34,01180", 52.842781055556) // comma as separator
+ testSingleParseDegreesString(t, "52,00000;50,00000;34,01180", 52.842781055556) // semicolon as separator
+
+ // point as decimal mark
+ testSingleParseDegreesString(t, "14.00000,44.00000,34.01180", 14.742781055556) // comma as separator
+ testSingleParseDegreesString(t, "14.00000;44.00000;34.01180", 14.742781055556) // semicolon as separator
+ testSingleParseDegreesString(t, "14.00000;44.00000,34.01180", 14.742781055556) // mixed separators
+
+ testSingleParseDegreesString(t, "-008.0,30.0,03.6", -8.501) // leading zeros
+
+ // no decimal places
+ testSingleParseDegreesString(t, "-10,15,54", -10.265)
+ testSingleParseDegreesString(t, "-10;15;54", -10.265)
+
+ // incorrect mix of comma and point as decimal mark
+ s := "-17,00000,15.00000,04.80000"
+ if _, err := parseTagDegreesString(s); err == nil {
+ t.Error("parseTagDegreesString: false positive for " + s)
+ }
+}
+
+// Make sure we error out early when a tag had a count of MaxUint32
+func TestMaxUint32CountError(t *testing.T) {
+ name := filepath.Join(*dataDir, "corrupt/max_uint32_exif.jpg")
+ f, err := os.Open(name)
+ if err != nil {
+ t.Fatalf("%v\n", err)
+ }
+ defer f.Close()
+
+ _, err = Decode(f)
+ if err == nil {
+ t.Fatal("no error on bad exif data")
+ }
+ if !strings.Contains(err.Error(), "invalid Count offset") {
+ t.Fatal("wrong error:", err.Error())
+ }
+}
+
+// Make sure we error out early with tag data sizes larger than the image file
+func TestHugeTagError(t *testing.T) {
+ name := filepath.Join(*dataDir, "corrupt/huge_tag_exif.jpg")
+ f, err := os.Open(name)
+ if err != nil {
+ t.Fatalf("%v\n", err)
+ }
+ defer f.Close()
+
+ _, err = Decode(f)
+ if err == nil {
+ t.Fatal("no error on bad exif data")
+ }
+ if !strings.Contains(err.Error(), "short read") {
+ t.Fatal("wrong error:", err.Error())
+ }
+}
+
+// Check for a 0-length tag value
+func TestZeroLengthTagError(t *testing.T) {
+ name := filepath.Join(*dataDir, "corrupt/infinite_loop_exif.jpg")
+ f, err := os.Open(name)
+ if err != nil {
+ t.Fatalf("%v\n", err)
+ }
+ defer f.Close()
+
+ _, err = Decode(f)
+ if err == nil {
+ t.Fatal("no error on bad exif data")
+ }
+ if !strings.Contains(err.Error(), "zero length tag value") {
+ t.Fatal("wrong error:", err.Error())
+ }
+}
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/regress_expected_test.go b/vendor/github.com/rwcarlsen/goexif/exif/regress_expected_test.go
new file mode 100644
index 000000000..bf3998189
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/regress_expected_test.go
@@ -0,0 +1,2293 @@
+package exif
+
+var regressExpected = map[string]map[FieldName]string{
+ "2004-01-11-22-45-15-sep-2004-01-11-22-45-15a.jpg": map[FieldName]string{
+ PixelXDimension: `1600`,
+ InteroperabilityIFDPointer: `1009`,
+ SceneType: `""`,
+ InteroperabilityIndex: `"R98"`,
+ Make: `"Samsung Techwin"`,
+ DateTimeOriginal: `"2004:01:11 22:45:15"`,
+ DateTimeDigitized: `"2004:01:11 22:45:15"`,
+ ImageDescription: `"SAMSUNG DIGITAL CAMERA "`,
+ ExifVersion: `"0220"`,
+ MeteringMode: `2`,
+ Flash: `1`,
+ Orientation: `1`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ FlashpixVersion: `"0100"`,
+ YResolution: `"72/1"`,
+ ThumbJPEGInterchangeFormat: `1039`,
+ MaxApertureValue: `"32/10"`,
+ ExposureProgram: `2`,
+ Software: `"M5011S-1031"`,
+ DateTime: `"2004:01:11 22:45:19"`,
+ FNumber: `"320/100"`,
+ ISOSpeedRatings: `150`,
+ ComponentsConfiguration: `""`,
+ CompressedBitsPerPixel: `"2/1"`,
+ RelatedSoundFile: `""`,
+ XResolution: `"72/1"`,
+ ExifIFDPointer: `251`,
+ ExposureTime: `"1000/30000"`,
+ LightSource: `0`,
+ FocalLength: `"82/11"`,
+ ColorSpace: `1`,
+ PixelYDimension: `1200`,
+ FileSource: `""`,
+ Model: `"U-CA 501"`,
+ ThumbJPEGInterchangeFormatLength: `3530`,
+ ExposureBiasValue: `"95/10"`,
+ },
+ "2006-08-03-16-29-38-sep-2006-08-03-16-29-38a.jpg": map[FieldName]string{
+ ThumbJPEGInterchangeFormat: `5108`,
+ ThumbJPEGInterchangeFormatLength: `4323`,
+ MaxApertureValue: `"95/32"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ ExifIFDPointer: `196`,
+ ExposureTime: `"1/1500"`,
+ InteroperabilityIndex: `"R98"`,
+ FocalPlaneXResolution: `"2816000/225"`,
+ YResolution: `"180/1"`,
+ DateTime: `"2006:08:03 16:29:38"`,
+ ShutterSpeedValue: `"338/32"`,
+ ApertureValue: `"95/32"`,
+ FocalLength: `"5800/1000"`,
+ FlashpixVersion: `"0100"`,
+ Make: `"Canon"`,
+ DateTimeOriginal: `"2006:08:03 16:29:38"`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `2824`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ FNumber: `"28/10"`,
+ ColorSpace: `1`,
+ FileSource: `""`,
+ WhiteBalance: `0`,
+ SensingMethod: `2`,
+ DateTimeDigitized: `"2006:08:03 16:29:38"`,
+ CompressedBitsPerPixel: `"5/1"`,
+ MeteringMode: `5`,
+ MakerNote: `""`,
+ UserComment: `""`,
+ PixelXDimension: `2816`,
+ Model: `"Canon PowerShot SD600"`,
+ ExposureBiasValue: `"0/3"`,
+ PixelYDimension: `2112`,
+ FocalPlaneResolutionUnit: `2`,
+ DigitalZoomRatio: `"2816/2816"`,
+ Orientation: `6`,
+ XResolution: `"180/1"`,
+ ExifVersion: `"0220"`,
+ Flash: `24`,
+ FocalPlaneYResolution: `"2112000/169"`,
+ CustomRendered: `0`,
+ },
+ "2006-11-11-19-17-56-sep-2006-11-11-19-17-56a.jpg": map[FieldName]string{
+ FNumber: `"28/10"`,
+ ExposureProgram: `2`,
+ Software: `"E3200v1.1"`,
+ DateTime: `"2006:11:11 19:17:56"`,
+ ExposureTime: `"10/601"`,
+ ISOSpeedRatings: `50`,
+ ComponentsConfiguration: `""`,
+ CompressedBitsPerPixel: `"4/1"`,
+ Saturation: `0`,
+ XResolution: `"300/1"`,
+ ExifIFDPointer: `284`,
+ ExposureBiasValue: `"0/10"`,
+ LightSource: `0`,
+ FocalLength: `"58/10"`,
+ ColorSpace: `1`,
+ PixelYDimension: `1536`,
+ FileSource: `""`,
+ Model: `"E3200"`,
+ ThumbJPEGInterchangeFormatLength: `4546`,
+ DateTimeDigitized: `"2006:11:11 19:17:56"`,
+ PixelXDimension: `2048`,
+ InteroperabilityIFDPointer: `1026`,
+ SceneType: `""`,
+ DigitalZoomRatio: `"0/100"`,
+ GainControl: `0`,
+ Make: `"NIKON"`,
+ DateTimeOriginal: `"2006:11:11 19:17:56"`,
+ InteroperabilityIndex: `"R98"`,
+ ImageDescription: `" "`,
+ Sharpness: `0`,
+ YCbCrPositioning: `2`,
+ ExifVersion: `"0220"`,
+ MeteringMode: `5`,
+ Flash: `25`,
+ FocalLengthIn35mmFilm: `38`,
+ SubjectDistanceRange: `0`,
+ Orientation: `1`,
+ ResolutionUnit: `2`,
+ MaxApertureValue: `"30/10"`,
+ FlashpixVersion: `"0100"`,
+ WhiteBalance: `0`,
+ YResolution: `"300/1"`,
+ ThumbJPEGInterchangeFormat: `4596`,
+ CustomRendered: `1`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ Contrast: `0`,
+ MakerNote: `""`,
+ UserComment: `" "`,
+ },
+ "2006-12-10-23-58-20-sep-2006-12-10-23-58-20a.jpg": map[FieldName]string{
+ Model: `"Canon PowerShot A80"`,
+ ExposureBiasValue: `"0/3"`,
+ PixelYDimension: `1704`,
+ FocalPlaneResolutionUnit: `2`,
+ FocalPlaneYResolution: `"1704000/210"`,
+ CustomRendered: `0`,
+ DigitalZoomRatio: `"2272/2272"`,
+ Orientation: `1`,
+ XResolution: `"180/1"`,
+ ExifVersion: `"0220"`,
+ Flash: `24`,
+ ThumbJPEGInterchangeFormat: `2036`,
+ ThumbJPEGInterchangeFormatLength: `6465`,
+ MaxApertureValue: `"95/32"`,
+ InteroperabilityIndex: `"R98"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ ExifIFDPointer: `196`,
+ ExposureTime: `"1/80"`,
+ FocalLength: `"250/32"`,
+ FlashpixVersion: `"0100"`,
+ FocalPlaneXResolution: `"2272000/280"`,
+ YResolution: `"180/1"`,
+ DateTime: `"2006:12:10 23:58:20"`,
+ ShutterSpeedValue: `"202/32"`,
+ ApertureValue: `"95/32"`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ Make: `"Canon"`,
+ DateTimeOriginal: `"2006:12:10 23:58:20"`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `1844`,
+ FNumber: `"28/10"`,
+ ColorSpace: `1`,
+ FileSource: `""`,
+ WhiteBalance: `0`,
+ UserComment: `""`,
+ PixelXDimension: `2272`,
+ SensingMethod: `2`,
+ DateTimeDigitized: `"2006:12:10 23:58:20"`,
+ CompressedBitsPerPixel: `"3/1"`,
+ MeteringMode: `5`,
+ MakerNote: `""`,
+ },
+ "2006-12-17-07-09-14-sep-2006-12-17-07-09-14a.jpg": map[FieldName]string{
+ WhiteBalance: `0`,
+ YResolution: `"72/1"`,
+ ThumbJPEGInterchangeFormatLength: `7063`,
+ ExposureBiasValue: `"0/10"`,
+ FlashpixVersion: `"0100"`,
+ PixelYDimension: `1536`,
+ ExposureMode: `0`,
+ InteroperabilityIndex: `"R98"`,
+ Make: `"PENTAX Corporation"`,
+ DateTimeDigitized: `"2006:12:17 07:09:14"`,
+ PixelXDimension: `2048`,
+ InteroperabilityIFDPointer: `31048`,
+ CustomRendered: `0`,
+ DateTime: `"2006:12:17 07:09:14"`,
+ ExposureProgram: `2`,
+ FocalLengthIn35mmFilm: `38`,
+ Saturation: `0`,
+ XResolution: `"72/1"`,
+ ISOSpeedRatings: `64`,
+ ExifVersion: `"0220"`,
+ CompressedBitsPerPixel: `"5725504/3145728"`,
+ Flash: `24`,
+ Model: `"PENTAX Optio S6"`,
+ ThumbJPEGInterchangeFormat: `31172`,
+ MaxApertureValue: `"27/10"`,
+ FocalLength: `"62/10"`,
+ ColorSpace: `1`,
+ DateTimeOriginal: `"2006:12:17 07:09:14"`,
+ MakerNote: `""`,
+ DigitalZoomRatio: `"100/100"`,
+ SceneCaptureType: `0`,
+ Contrast: `0`,
+ Software: `"Optio S6 Ver 1.00"`,
+ FNumber: `"270/100"`,
+ Sharpness: `0`,
+ ComponentsConfiguration: `""`,
+ MeteringMode: `5`,
+ SubjectDistanceRange: `2`,
+ Orientation: `1`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ ExifIFDPointer: `586`,
+ ExposureTime: `"1/160"`,
+ },
+ "2006-12-21-15-55-26-sep-2006-12-21-15-55-26a.jpg": map[FieldName]string{
+ DateTimeDigitized: `"2006:12:21 15:55:26"`,
+ CompressedBitsPerPixel: `"8/1"`,
+ MeteringMode: `3`,
+ MakerNote: `""`,
+ PixelXDimension: `2592`,
+ Saturation: `0`,
+ ImageDescription: `" "`,
+ Model: `"DSC-W15"`,
+ ExposureBiasValue: `"-20/10"`,
+ PixelYDimension: `1944`,
+ Orientation: `1`,
+ XResolution: `"72/1"`,
+ ISOSpeedRatings: `100`,
+ ExifVersion: `"0220"`,
+ Flash: `79`,
+ CustomRendered: `0`,
+ ThumbJPEGInterchangeFormat: `2484`,
+ ThumbJPEGInterchangeFormatLength: `13571`,
+ ExposureProgram: `2`,
+ MaxApertureValue: `"48/16"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ ExifIFDPointer: `256`,
+ ExposureTime: `"10/400"`,
+ SceneType: `""`,
+ InteroperabilityIndex: `"R98"`,
+ YResolution: `"72/1"`,
+ DateTime: `"2006:12:21 15:55:26"`,
+ LightSource: `0`,
+ FocalLength: `"79/10"`,
+ FlashpixVersion: `"0100"`,
+ Contrast: `0`,
+ Make: `"SONY"`,
+ DateTimeOriginal: `"2006:12:21 15:55:26"`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `2278`,
+ ExposureMode: `1`,
+ SceneCaptureType: `0`,
+ FNumber: `"28/10"`,
+ ColorSpace: `1`,
+ FileSource: `""`,
+ WhiteBalance: `0`,
+ Sharpness: `0`,
+ },
+ "2007-01-01-12-00-00-sep-2007-01-01-12-00-00a.jpg": map[FieldName]string{
+ MaxApertureValue: `"286/100"`,
+ ExposureIndex: `"200/1"`,
+ ThumbJPEGInterchangeFormat: `13848`,
+ ThumbJPEGInterchangeFormatLength: `3436`,
+ ExposureProgram: `2`,
+ ExposureTime: `"8942/1000000"`,
+ SceneType: `""`,
+ InteroperabilityIndex: `"R98"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ ExifIFDPointer: `340`,
+ ApertureValue: `"286/100"`,
+ LightSource: `0`,
+ FocalLength: `"60/10"`,
+ FlashpixVersion: `"0100"`,
+ YResolution: `"480/1"`,
+ Software: `"KODAK EASYSHARE C713 ZOOM DIGITAL CAMERA"`,
+ ShutterSpeedValue: `"680/100"`,
+ InteroperabilityIFDPointer: `13816`,
+ ExposureMode: `0`,
+ FocalLengthIn35mmFilm: `36`,
+ SceneCaptureType: `0`,
+ Contrast: `0`,
+ Make: `"EASTMAN KODAK COMPANY"`,
+ DateTimeOriginal: `"2007:01:01 12:00:00"`,
+ ComponentsConfiguration: `""`,
+ WhiteBalance: `0`,
+ Sharpness: `0`,
+ FNumber: `"270/100"`,
+ ColorSpace: `1`,
+ FileSource: `""`,
+ PixelXDimension: `1280`,
+ SensingMethod: `2`,
+ GainControl: `2`,
+ Saturation: `0`,
+ SubjectDistanceRange: `0`,
+ DateTimeDigitized: `"2007:01:01 12:00:00"`,
+ MeteringMode: `5`,
+ MakerNote: `""`,
+ Model: `"KODAK EASYSHARE C713 ZOOM DIGITAL CAMERA"`,
+ ExposureBiasValue: `"0/10"`,
+ PixelYDimension: `960`,
+ ExifVersion: `"0221"`,
+ Flash: `25`,
+ CustomRendered: `0`,
+ DigitalZoomRatio: `"0/10"`,
+ Orientation: `1`,
+ XResolution: `"480/1"`,
+ ISOSpeedRatings: `200`,
+ },
+ "2007-01-17-21-49-44-sep-2007-01-17-21-49-44a.jpg": map[FieldName]string{
+ XResolution: `"180/1"`,
+ ISOSpeedRatings: `50`,
+ ExifVersion: `"0220"`,
+ Flash: `24`,
+ CustomRendered: `0`,
+ Orientation: `1`,
+ ThumbJPEGInterchangeFormatLength: `7024`,
+ ExposureProgram: `2`,
+ MaxApertureValue: `"297/100"`,
+ ThumbJPEGInterchangeFormat: `956`,
+ YCbCrPositioning: `2`,
+ ExifIFDPointer: `266`,
+ ExposureTime: `"1/30"`,
+ InteroperabilityIndex: `"R98"`,
+ ResolutionUnit: `2`,
+ Software: `"1.00.018PR "`,
+ DateTime: `"2007:01:17 21:49:44"`,
+ ShutterSpeedValue: `"491/100"`,
+ ApertureValue: `"33/10"`,
+ LightSource: `0`,
+ FocalLength: `"73/10"`,
+ FlashpixVersion: `"0100"`,
+ YResolution: `"180/1"`,
+ DateTimeOriginal: `"2007:01:17 21:49:44"`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `832`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ Make: `"Digital Camera "`,
+ ColorSpace: `1`,
+ FileSource: `""`,
+ WhiteBalance: `0`,
+ FNumber: `"33/10"`,
+ MeteringMode: `2`,
+ MakerNote: `"6106789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456"`,
+ PixelXDimension: `2816`,
+ SensingMethod: `2`,
+ DateTimeDigitized: `"2007:01:17 21:49:44"`,
+ Model: `"6MP-9Y8 "`,
+ ExposureBiasValue: `"0/10"`,
+ PixelYDimension: `2112`,
+ ImageDescription: `"Digital image "`,
+ },
+ "2007-02-02-18-13-29-sep-2007-02-02-18-13-29a.jpg": map[FieldName]string{
+ Software: `"Optio S5z Ver 1.00 "`,
+ FNumber: `"26/10"`,
+ Sharpness: `0`,
+ Orientation: `1`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ ExifIFDPointer: `586`,
+ ExposureTime: `"1/60"`,
+ ComponentsConfiguration: `""`,
+ MeteringMode: `5`,
+ SubjectDistanceRange: `2`,
+ YResolution: `"72/1"`,
+ ThumbJPEGInterchangeFormatLength: `8800`,
+ ExposureBiasValue: `"0/3"`,
+ FlashpixVersion: `"0100"`,
+ PixelYDimension: `1920`,
+ WhiteBalance: `0`,
+ Make: `"PENTAX Corporation "`,
+ DateTimeDigitized: `"2007:02:02 18:13:29"`,
+ PixelXDimension: `2560`,
+ InteroperabilityIFDPointer: `30974`,
+ CustomRendered: `0`,
+ ExposureMode: `0`,
+ InteroperabilityIndex: `"R98"`,
+ DateTime: `"2007:02:02 18:13:29"`,
+ ExposureProgram: `2`,
+ XResolution: `"72/1"`,
+ ISOSpeedRatings: `200`,
+ ExifVersion: `"0220"`,
+ CompressedBitsPerPixel: `"27033600/4915200"`,
+ Flash: `25`,
+ FocalLengthIn35mmFilm: `35`,
+ Saturation: `0`,
+ Model: `"PENTAX Optio S5z "`,
+ ThumbJPEGInterchangeFormat: `31098`,
+ MaxApertureValue: `"28/10"`,
+ FocalLength: `"580/100"`,
+ ColorSpace: `1`,
+ DateTimeOriginal: `"2007:02:02 18:13:29"`,
+ MakerNote: `""`,
+ DigitalZoomRatio: `"0/0"`,
+ SceneCaptureType: `0`,
+ Contrast: `0`,
+ },
+ "2007-05-02-17-02-21-sep-2007-05-02-17-02-21a.jpg": map[FieldName]string{
+ UserComment: `""`,
+ PixelXDimension: `1600`,
+ SensingMethod: `2`,
+ DateTimeDigitized: `"2007:05:02 17:02:21"`,
+ CompressedBitsPerPixel: `"3/1"`,
+ MeteringMode: `5`,
+ MakerNote: `""`,
+ Model: `"Canon IXY DIGITAL 55"`,
+ ExposureBiasValue: `"0/3"`,
+ PixelYDimension: `1200`,
+ FocalPlaneResolutionUnit: `2`,
+ FocalPlaneYResolution: `"1200000/168"`,
+ CustomRendered: `0`,
+ DigitalZoomRatio: `"2592/2592"`,
+ Orientation: `1`,
+ XResolution: `"180/1"`,
+ ExifVersion: `"0220"`,
+ Flash: `9`,
+ ThumbJPEGInterchangeFormat: `5108`,
+ ThumbJPEGInterchangeFormatLength: `6306`,
+ MaxApertureValue: `"107/32"`,
+ InteroperabilityIndex: `"R98"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ ExifIFDPointer: `196`,
+ ExposureTime: `"1/60"`,
+ FocalLength: `"7109/1000"`,
+ FlashpixVersion: `"0100"`,
+ FocalPlaneXResolution: `"1600000/225"`,
+ YResolution: `"180/1"`,
+ DateTime: `"2007:05:02 17:02:21"`,
+ ShutterSpeedValue: `"189/32"`,
+ ApertureValue: `"107/32"`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ Make: `"Canon"`,
+ DateTimeOriginal: `"2007:05:02 17:02:21"`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `2226`,
+ FNumber: `"32/10"`,
+ ColorSpace: `1`,
+ FileSource: `""`,
+ WhiteBalance: `0`,
+ },
+ "2007-05-12-08-19-07-sep-2007-05-12-08-19-07a.jpg": map[FieldName]string{
+ Model: `"EX-Z70 "`,
+ ExposureBiasValue: `"0/3"`,
+ PixelYDimension: `480`,
+ CustomRendered: `0`,
+ DigitalZoomRatio: `"0/0"`,
+ Orientation: `1`,
+ XResolution: `"72/1"`,
+ ExifVersion: `"0221"`,
+ Flash: `16`,
+ ThumbJPEGInterchangeFormat: `27422`,
+ ThumbJPEGInterchangeFormatLength: `8332`,
+ ExposureProgram: `2`,
+ MaxApertureValue: `"33/10"`,
+ InteroperabilityIndex: `"R98"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ ExifIFDPointer: `282`,
+ ExposureTime: `"1/50"`,
+ FocalLength: `"630/100"`,
+ FlashpixVersion: `"0100"`,
+ YResolution: `"72/1"`,
+ Software: `"1.00 "`,
+ DateTime: `"2007:06:17 22:56:38"`,
+ LightSource: `0`,
+ ExposureMode: `0`,
+ FocalLengthIn35mmFilm: `38`,
+ SceneCaptureType: `0`,
+ Contrast: `0`,
+ Make: `"CASIO COMPUTER CO.,LTD."`,
+ DateTimeOriginal: `"2007:05:12 08:19:07"`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `27298`,
+ Sharpness: `0`,
+ FNumber: `"31/10"`,
+ ColorSpace: `1`,
+ FileSource: `""`,
+ WhiteBalance: `0`,
+ PixelXDimension: `640`,
+ GainControl: `2`,
+ Saturation: `0`,
+ DateTimeDigitized: `"2007:06:17 22:56:38"`,
+ CompressedBitsPerPixel: `"252746/307200"`,
+ MeteringMode: `5`,
+ MakerNote: `""`,
+ },
+ "2007-05-26-04-49-45-sep-2007-05-26-04-49-45a.jpg": map[FieldName]string{
+ ThumbJPEGInterchangeFormat: `4596`,
+ ThumbJPEGInterchangeFormatLength: `10120`,
+ ExposureProgram: `2`,
+ MaxApertureValue: `"34/10"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ ExifIFDPointer: `284`,
+ ExposureTime: `"10/3486"`,
+ SceneType: `""`,
+ InteroperabilityIndex: `"R98"`,
+ YResolution: `"300/1"`,
+ Software: `"COOLPIX L3v1.2"`,
+ DateTime: `"2007:05:26 04:49:45"`,
+ LightSource: `0`,
+ FocalLength: `"63/10"`,
+ FlashpixVersion: `"0100"`,
+ Contrast: `0`,
+ Make: `"NIKON"`,
+ DateTimeOriginal: `"2007:05:26 04:49:45"`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `1026`,
+ ExposureMode: `0`,
+ FocalLengthIn35mmFilm: `38`,
+ SceneCaptureType: `2`,
+ FNumber: `"32/10"`,
+ ColorSpace: `1`,
+ FileSource: `""`,
+ WhiteBalance: `0`,
+ Sharpness: `0`,
+ Saturation: `0`,
+ DateTimeDigitized: `"2007:05:26 04:49:45"`,
+ CompressedBitsPerPixel: `"4/1"`,
+ MeteringMode: `5`,
+ MakerNote: `""`,
+ UserComment: `" "`,
+ PixelXDimension: `2592`,
+ GainControl: `0`,
+ SubjectDistanceRange: `0`,
+ ImageDescription: `" "`,
+ Model: `"COOLPIX L3"`,
+ ExposureBiasValue: `"0/10"`,
+ PixelYDimension: `1944`,
+ Orientation: `1`,
+ XResolution: `"300/1"`,
+ ISOSpeedRatings: `50`,
+ ExifVersion: `"0220"`,
+ Flash: `24`,
+ CustomRendered: `0`,
+ DigitalZoomRatio: `"0/100"`,
+ },
+ "2007-05-30-14-28-01-sep-2007-05-30-14-28-01a.jpg": map[FieldName]string{
+ CompressedBitsPerPixel: `"2/1"`,
+ MeteringMode: `5`,
+ UserComment: `" "`,
+ GainControl: `1`,
+ Saturation: `0`,
+ SubjectDistanceRange: `0`,
+ ExifIFDPointer: `284`,
+ ExposureTime: `"10/40"`,
+ InteroperabilityIndex: `"R98"`,
+ Software: `"COOLPIX S6V1.0"`,
+ ImageDescription: `" "`,
+ Model: `"COOLPIX S6"`,
+ XResolution: `"300/1"`,
+ ISOSpeedRatings: `53`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `1026`,
+ CustomRendered: `0`,
+ DigitalZoomRatio: `"0/100"`,
+ Make: `"NIKON"`,
+ Orientation: `1`,
+ Contrast: `0`,
+ FocalLengthIn35mmFilm: `35`,
+ SceneCaptureType: `0`,
+ FileSource: `""`,
+ FNumber: `"30/10"`,
+ ExposureProgram: `2`,
+ DateTimeDigitized: `"2007:05:30 14:28:01"`,
+ MakerNote: `""`,
+ PixelXDimension: `2816`,
+ SceneType: `""`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ ExposureBiasValue: `"0/10"`,
+ LightSource: `0`,
+ FocalLength: `"58/10"`,
+ FlashpixVersion: `"0100"`,
+ PixelYDimension: `2112`,
+ YResolution: `"300/1"`,
+ DateTime: `"2007:05:30 14:28:01"`,
+ Flash: `16`,
+ ExposureMode: `0`,
+ ExifVersion: `"0220"`,
+ DateTimeOriginal: `"2007:05:30 14:28:01"`,
+ MaxApertureValue: `"32/10"`,
+ ColorSpace: `1`,
+ WhiteBalance: `0`,
+ Sharpness: `0`,
+ ThumbJPEGInterchangeFormat: `4596`,
+ ThumbJPEGInterchangeFormatLength: `5274`,
+ },
+ "2007-06-06-16-15-25-sep-2007-06-06-16-15-25a.jpg": map[FieldName]string{
+ ExifVersion: `"0220"`,
+ DateTimeOriginal: `"2007:06:06 16:15:25"`,
+ Flash: `24`,
+ ExposureMode: `0`,
+ ThumbJPEGInterchangeFormat: `4596`,
+ ThumbJPEGInterchangeFormatLength: `5967`,
+ MaxApertureValue: `"30/10"`,
+ ColorSpace: `1`,
+ WhiteBalance: `0`,
+ Sharpness: `0`,
+ ExifIFDPointer: `284`,
+ ExposureTime: `"10/2870"`,
+ CompressedBitsPerPixel: `"2/1"`,
+ MeteringMode: `5`,
+ UserComment: `" "`,
+ GainControl: `0`,
+ Saturation: `0`,
+ SubjectDistanceRange: `0`,
+ InteroperabilityIndex: `"R98"`,
+ ImageDescription: `" "`,
+ Model: `"E3700"`,
+ Software: `"E3700v1.2"`,
+ Make: `"NIKON"`,
+ Orientation: `1`,
+ XResolution: `"300/1"`,
+ ISOSpeedRatings: `50`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `1026`,
+ CustomRendered: `0`,
+ DigitalZoomRatio: `"0/100"`,
+ FocalLengthIn35mmFilm: `35`,
+ SceneCaptureType: `0`,
+ Contrast: `0`,
+ FNumber: `"48/10"`,
+ ExposureProgram: `2`,
+ FileSource: `""`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ DateTimeDigitized: `"2007:06:06 16:15:25"`,
+ MakerNote: `""`,
+ PixelXDimension: `2048`,
+ SceneType: `""`,
+ YResolution: `"300/1"`,
+ DateTime: `"2007:06:06 16:15:25"`,
+ ExposureBiasValue: `"0/10"`,
+ LightSource: `0`,
+ FocalLength: `"54/10"`,
+ FlashpixVersion: `"0100"`,
+ PixelYDimension: `1536`,
+ },
+ "2007-06-26-10-13-04-sep-2007-06-26-10-13-04a.jpg": map[FieldName]string{
+ ColorSpace: `1`,
+ FileSource: `""`,
+ FNumber: `"3/1"`,
+ CompressedBitsPerPixel: `"6389872/3145728"`,
+ MeteringMode: `2`,
+ MakerNote: `""`,
+ PixelXDimension: `2048`,
+ SensingMethod: `2`,
+ DateTimeDigitized: `"2007:06:26 10:13:04"`,
+ Model: `"DV"`,
+ Copyright: `"Copyright2004"`,
+ ExposureBiasValue: `"1/4"`,
+ PixelYDimension: `1536`,
+ ImageDescription: `"My beautiful picture"`,
+ XResolution: `"320/1"`,
+ ISOSpeedRatings: `100`,
+ ExifVersion: `"0210"`,
+ Flash: `0`,
+ Orientation: `1`,
+ ThumbJPEGInterchangeFormatLength: `6292`,
+ ExposureProgram: `3`,
+ MaxApertureValue: `"3/1"`,
+ ExposureIndex: `"146/1"`,
+ ThumbJPEGInterchangeFormat: `1306`,
+ YCbCrPositioning: `2`,
+ ExposureTime: `"23697424/268435456"`,
+ ExifIFDPointer: `262`,
+ RelatedSoundFile: `"RelatedSound"`,
+ SceneType: `""`,
+ InteroperabilityIndex: `"R98"`,
+ ResolutionUnit: `2`,
+ Software: `"DVWare 1.0"`,
+ DateTime: `"2007:06:26 10:13:04"`,
+ ShutterSpeedValue: `"7/1"`,
+ ApertureValue: `"3/1"`,
+ LightSource: `0`,
+ FlashpixVersion: `"0100"`,
+ YResolution: `"384/1"`,
+ DateTimeOriginal: `"2007:06:26 10:13:04"`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `1170`,
+ Make: `"CEC"`,
+ },
+ "2007-07-13-17-02-30-sep-2007-07-13-17-02-30a.jpg": map[FieldName]string{
+ Software: `"Ver 1.00 "`,
+ DateTime: `"2007:07:13 17:02:30"`,
+ FNumber: `"48/10"`,
+ ExposureProgram: `2`,
+ RelatedSoundFile: `" "`,
+ Saturation: `0`,
+ XResolution: `"72/1"`,
+ ExifIFDPointer: `266`,
+ ExposureTime: `"1/110"`,
+ ISOSpeedRatings: `64`,
+ ComponentsConfiguration: `""`,
+ ColorSpace: `1`,
+ PixelYDimension: `2736`,
+ FileSource: `""`,
+ Model: `"ViviCam X30 "`,
+ ThumbJPEGInterchangeFormatLength: `20544`,
+ ShutterSpeedValue: `"678/100"`,
+ ExposureBiasValue: `"0/10"`,
+ LightSource: `0`,
+ DigitalZoomRatio: `"100/100"`,
+ GainControl: `0`,
+ InteroperabilityIndex: `"R98"`,
+ Make: `"Vivitar"`,
+ DateTimeOriginal: `"2007:07:13 17:02:30"`,
+ DateTimeDigitized: `"2007:07:13 17:02:30"`,
+ PixelXDimension: `3648`,
+ InteroperabilityIFDPointer: `1010`,
+ ImageDescription: `"Digital StillCamera"`,
+ Sharpness: `0`,
+ Flash: `0`,
+ FocalLengthIn35mmFilm: `35`,
+ SubjectDistanceRange: `0`,
+ Orientation: `1`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ ExifVersion: `"0220"`,
+ MeteringMode: `2`,
+ WhiteBalance: `0`,
+ YResolution: `"72/1"`,
+ ThumbJPEGInterchangeFormat: `1156`,
+ ApertureValue: `"45/10"`,
+ MaxApertureValue: `"30/10"`,
+ FlashpixVersion: `"0100"`,
+ MakerNote: `""`,
+ CustomRendered: `0`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ Contrast: `0`,
+ },
+ "2007-08-15-14-42-46-sep-2007-08-15-14-42-46a.jpg": map[FieldName]string{
+ Model: `"KODAK C663 ZOOM DIGITAL CAMERA"`,
+ ShutterSpeedValue: `"73/10"`,
+ DigitalZoomRatio: `"0/100"`,
+ FocalLengthIn35mmFilm: `66`,
+ SceneCaptureType: `0`,
+ Contrast: `0`,
+ Make: `"EASTMAN KODAK COMPANY"`,
+ Orientation: `1`,
+ XResolution: `"230/1"`,
+ CustomRendered: `0`,
+ ISOSpeedRatings: `80`,
+ ComponentsConfiguration: `""`,
+ FNumber: `"36/10"`,
+ ExposureProgram: `2`,
+ FileSource: `""`,
+ PixelXDimension: `2832`,
+ SensingMethod: `2`,
+ SceneType: `""`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ DateTimeDigitized: `"2007:08:15 14:42:46"`,
+ MakerNote: `""`,
+ FocalLength: `"110/10"`,
+ FlashpixVersion: `"0100"`,
+ PixelYDimension: `2128`,
+ YResolution: `"230/1"`,
+ ApertureValue: `"37/10"`,
+ ExposureBiasValue: `"0/3"`,
+ LightSource: `0`,
+ ExposureMode: `0`,
+ ExifVersion: `"0221"`,
+ DateTimeOriginal: `"2007:08:15 14:42:46"`,
+ Flash: `24`,
+ MaxApertureValue: `"37/10"`,
+ ColorSpace: `1`,
+ ExposureIndex: `"80/1"`,
+ WhiteBalance: `0`,
+ Sharpness: `0`,
+ ThumbJPEGInterchangeFormat: `8472`,
+ ThumbJPEGInterchangeFormatLength: `3060`,
+ ExposureTime: `"1/160"`,
+ MeteringMode: `5`,
+ ExifIFDPointer: `320`,
+ GainControl: `0`,
+ Saturation: `0`,
+ SubjectDistanceRange: `0`,
+ },
+ "2007-08-24-02-40-42-sep-2007-08-24-02-40-42a.jpg": map[FieldName]string{
+ ThumbJPEGInterchangeFormat: `5108`,
+ ThumbJPEGInterchangeFormatLength: `2084`,
+ MaxApertureValue: `"147/32"`,
+ ColorSpace: `1`,
+ WhiteBalance: `0`,
+ ExifIFDPointer: `196`,
+ ExposureTime: `"1/400"`,
+ CompressedBitsPerPixel: `"5/1"`,
+ MeteringMode: `5`,
+ UserComment: `""`,
+ InteroperabilityIndex: `"R98"`,
+ Model: `"Canon PowerShot SD450"`,
+ ShutterSpeedValue: `"277/32"`,
+ FocalPlaneResolutionUnit: `2`,
+ DigitalZoomRatio: `"2592/2592"`,
+ Make: `"Canon"`,
+ Orientation: `1`,
+ XResolution: `"180/1"`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `2206`,
+ FocalPlaneYResolution: `"1944000/168"`,
+ CustomRendered: `0`,
+ SceneCaptureType: `0`,
+ FNumber: `"100/10"`,
+ FileSource: `""`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ DateTimeDigitized: `"2007:08:24 02:40:42"`,
+ MakerNote: `""`,
+ PixelXDimension: `2592`,
+ SensingMethod: `2`,
+ FocalPlaneXResolution: `"2592000/225"`,
+ YResolution: `"180/1"`,
+ DateTime: `"2007:08:24 02:40:42"`,
+ ApertureValue: `"213/32"`,
+ ExposureBiasValue: `"0/3"`,
+ FocalLength: `"17400/1000"`,
+ FlashpixVersion: `"0100"`,
+ PixelYDimension: `1944`,
+ ExifVersion: `"0220"`,
+ DateTimeOriginal: `"2007:08:24 02:40:42"`,
+ Flash: `24`,
+ ExposureMode: `0`,
+ },
+ "2007-11-07-11-40-44-sep-2007-11-07-11-40-44a.jpg": map[FieldName]string{
+ YResolution: `"72/1"`,
+ Copyright: `" "`,
+ ThumbJPEGInterchangeFormat: `1306`,
+ ApertureValue: `"600/100"`,
+ MaxApertureValue: `"360/100"`,
+ FlashpixVersion: `"0100"`,
+ WhiteBalance: `0`,
+ MakerNote: `""`,
+ SensingMethod: `2`,
+ CustomRendered: `1`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ Software: `"Digital Camera FinePix Z1 Ver1.00"`,
+ DateTime: `"2007:11:07 11:40:44"`,
+ FNumber: `"800/100"`,
+ ExposureProgram: `2`,
+ XResolution: `"72/1"`,
+ ExifIFDPointer: `294`,
+ ExposureTime: `"10/2000"`,
+ ISOSpeedRatings: `64`,
+ ComponentsConfiguration: `""`,
+ CompressedBitsPerPixel: `"20/10"`,
+ PixelYDimension: `1944`,
+ Model: `"FinePix Z1 "`,
+ ThumbJPEGInterchangeFormatLength: `9900`,
+ ShutterSpeedValue: `"764/100"`,
+ ExposureBiasValue: `"0/100"`,
+ LightSource: `0`,
+ FocalLength: `"610/100"`,
+ ColorSpace: `1`,
+ FocalPlaneXResolution: `"4442/1"`,
+ FileSource: `""`,
+ InteroperabilityIndex: `"R98"`,
+ Make: `"FUJIFILM"`,
+ DateTimeOriginal: `"2007:11:07 11:40:44"`,
+ DateTimeDigitized: `"2007:11:07 11:40:44"`,
+ BrightnessValue: `"906/100"`,
+ PixelXDimension: `2592`,
+ InteroperabilityIFDPointer: `1158`,
+ SceneType: `""`,
+ FocalPlaneResolutionUnit: `3`,
+ Sharpness: `0`,
+ SubjectDistanceRange: `0`,
+ Orientation: `1`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ ExifVersion: `"0220"`,
+ MeteringMode: `5`,
+ Flash: `16`,
+ FocalPlaneYResolution: `"4442/1"`,
+ },
+ "2008-06-02-10-03-57-sep-2008-06-02-10-03-57a.jpg": map[FieldName]string{
+ ColorSpace: `1`,
+ FileSource: `""`,
+ WhiteBalance: `0`,
+ Sharpness: `0`,
+ FNumber: `"2800/1000"`,
+ CompressedBitsPerPixel: `"5896224/3145728"`,
+ MeteringMode: `4`,
+ MakerNote: `""`,
+ PixelXDimension: `2048`,
+ SensingMethod: `2`,
+ DateTimeDigitized: `"2008:06:13 06:16:19"`,
+ Copyright: `"Copyright 2006"`,
+ ExposureBiasValue: `"0/10"`,
+ PixelYDimension: `1536`,
+ Model: `"i533"`,
+ XResolution: `"288/3"`,
+ ISOSpeedRatings: `100`,
+ ExifVersion: `"0220"`,
+ Flash: `65`,
+ DigitalZoomRatio: `"100/100"`,
+ Orientation: `1`,
+ ThumbJPEGInterchangeFormatLength: `5972`,
+ ExposureProgram: `7`,
+ MaxApertureValue: `"2970/1000"`,
+ ThumbJPEGInterchangeFormat: `3756`,
+ YCbCrPositioning: `2`,
+ ExifIFDPointer: `226`,
+ ExposureTime: `"10/600"`,
+ SceneType: `""`,
+ InteroperabilityIndex: `"R98"`,
+ ResolutionUnit: `2`,
+ Software: `"00.00.1240a"`,
+ DateTime: `"2008:06:13 06:16:19"`,
+ ShutterSpeedValue: `"5907/1000"`,
+ ApertureValue: `"2970/1000"`,
+ LightSource: `4`,
+ FocalLength: `"6200/1000"`,
+ FlashpixVersion: `"0100"`,
+ YResolution: `"288/3"`,
+ DateTimeOriginal: `"2008:06:02 10:03:57"`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `3620`,
+ ExposureMode: `0`,
+ Make: `"Polaroid"`,
+ },
+ "2008-06-06-13-29-29-sep-2008-06-06-13-29-29a.jpg": map[FieldName]string{
+ PixelXDimension: `1600`,
+ InteroperabilityIFDPointer: `3334`,
+ DigitalZoomRatio: `"3072/3072"`,
+ InteroperabilityIndex: `"R98"`,
+ Make: `"Canon"`,
+ DateTimeOriginal: `"2008:06:06 13:29:29"`,
+ DateTimeDigitized: `"2008:06:06 13:29:29"`,
+ FocalPlaneResolutionUnit: `2`,
+ ExifVersion: `"0220"`,
+ MeteringMode: `5`,
+ Flash: `16`,
+ FocalPlaneYResolution: `"1200000/169"`,
+ Orientation: `6`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ MaxApertureValue: `"116/32"`,
+ FlashpixVersion: `"0100"`,
+ WhiteBalance: `0`,
+ YResolution: `"180/1"`,
+ ThumbJPEGInterchangeFormat: `5108`,
+ ApertureValue: `"116/32"`,
+ CustomRendered: `0`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ MakerNote: `""`,
+ UserComment: `""`,
+ SensingMethod: `2`,
+ DateTime: `"2008:06:06 13:29:29"`,
+ FNumber: `"35/10"`,
+ ISOSpeedRatings: `80`,
+ ComponentsConfiguration: `""`,
+ CompressedBitsPerPixel: `"5/1"`,
+ XResolution: `"180/1"`,
+ ExifIFDPointer: `196`,
+ ExposureTime: `"1/320"`,
+ ExposureBiasValue: `"0/3"`,
+ FocalLength: `"8462/1000"`,
+ ColorSpace: `1`,
+ PixelYDimension: `1200`,
+ FocalPlaneXResolution: `"1600000/225"`,
+ Model: `"Canon DIGITAL IXUS 75"`,
+ ThumbJPEGInterchangeFormatLength: `6594`,
+ ShutterSpeedValue: `"266/32"`,
+ FileSource: `""`,
+ },
+ "2008-06-17-01-21-30-sep-2008-06-17-01-21-30a.jpg": map[FieldName]string{
+ MaxApertureValue: `"30/10"`,
+ ThumbJPEGInterchangeFormat: `1041`,
+ ThumbJPEGInterchangeFormatLength: `13506`,
+ ExposureProgram: `2`,
+ ExposureTime: `"10/326"`,
+ SceneType: `""`,
+ InteroperabilityIndex: `"R98"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ ExifIFDPointer: `253`,
+ LightSource: `0`,
+ FocalLength: `"645/100"`,
+ FlashpixVersion: `"0100"`,
+ YResolution: `"72/1"`,
+ Software: `"A520_CT019"`,
+ DateTime: `"2008:06:17 01:22:13"`,
+ InteroperabilityIFDPointer: `1011`,
+ Make: `"Polaroid"`,
+ DateTimeOriginal: `"2008:06:17 01:21:30"`,
+ ComponentsConfiguration: `""`,
+ FNumber: `"28/10"`,
+ ColorSpace: `1`,
+ FileSource: `""`,
+ UserComment: `""`,
+ PixelXDimension: `2592`,
+ DateTimeDigitized: `"2008:06:17 01:21:30"`,
+ CompressedBitsPerPixel: `"2/1"`,
+ MeteringMode: `2`,
+ PixelYDimension: `1944`,
+ ImageDescription: `"DCFC1247.JPG "`,
+ Model: `"5MP Digital Camera"`,
+ ExposureBiasValue: `"0/10"`,
+ ExifVersion: `"0220"`,
+ Flash: `0`,
+ Orientation: `1`,
+ XResolution: `"72/1"`,
+ ISOSpeedRatings: `100`,
+ },
+ "2008-09-02-17-43-48-sep-2008-09-02-17-43-48a.jpg": map[FieldName]string{
+ ImageDescription: `" "`,
+ Model: `"Z550a"`,
+ YResolution: `"72/1"`,
+ Software: `"R6GA004 prgCXC1250583_GENERIC_M 2.0"`,
+ DateTime: `"2008:09:02 17:43:48"`,
+ FlashpixVersion: `"0100"`,
+ PixelYDimension: `1024`,
+ Make: `"Sony Ericsson"`,
+ Orientation: `1`,
+ XResolution: `"72/1"`,
+ ExifVersion: `"0220"`,
+ DateTimeOriginal: `"2008:09:02 17:43:48"`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `612`,
+ ThumbJPEGInterchangeFormat: `748`,
+ ThumbJPEGInterchangeFormatLength: `4641`,
+ ColorSpace: `1`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ ExifIFDPointer: `302`,
+ DateTimeDigitized: `"2008:09:02 17:43:48"`,
+ PixelXDimension: `1280`,
+ InteroperabilityIndex: `"R98"`,
+ },
+ "2009-03-26-09-23-20-sep-2009-03-26-09-23-20a.jpg": map[FieldName]string{
+ FocalLength: `"5800/1000"`,
+ ColorSpace: `1`,
+ PixelYDimension: `2304`,
+ FocalPlaneXResolution: `"3072000/225"`,
+ Model: `"Canon PowerShot SD750"`,
+ ThumbJPEGInterchangeFormatLength: `5513`,
+ ShutterSpeedValue: `"287/32"`,
+ ExposureBiasValue: `"0/3"`,
+ FileSource: `""`,
+ InteroperabilityIFDPointer: `3334`,
+ DigitalZoomRatio: `"3072/3072"`,
+ InteroperabilityIndex: `"R98"`,
+ Make: `"Canon"`,
+ DateTimeOriginal: `"2009:03:26 09:23:20"`,
+ DateTimeDigitized: `"2009:03:26 09:23:20"`,
+ PixelXDimension: `3072`,
+ FocalPlaneResolutionUnit: `2`,
+ MeteringMode: `5`,
+ Flash: `24`,
+ FocalPlaneYResolution: `"2304000/169"`,
+ Orientation: `1`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ ExifVersion: `"0220"`,
+ FlashpixVersion: `"0100"`,
+ WhiteBalance: `0`,
+ YResolution: `"180/1"`,
+ ThumbJPEGInterchangeFormat: `5108`,
+ ApertureValue: `"95/32"`,
+ MaxApertureValue: `"95/32"`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ MakerNote: `""`,
+ UserComment: `""`,
+ SensingMethod: `2`,
+ CustomRendered: `0`,
+ DateTime: `"2009:03:26 09:23:20"`,
+ FNumber: `"28/10"`,
+ ComponentsConfiguration: `""`,
+ CompressedBitsPerPixel: `"5/1"`,
+ XResolution: `"180/1"`,
+ ExifIFDPointer: `196`,
+ ExposureTime: `"1/500"`,
+ ISOSpeedRatings: `160`,
+ },
+ "2009-04-11-03-01-38-sep-2009-04-11-03-01-38a.jpg": map[FieldName]string{
+ ThumbJPEGInterchangeFormat: `33660`,
+ MaxApertureValue: `"30/10"`,
+ FlashpixVersion: `"0100"`,
+ WhiteBalance: `0`,
+ YResolution: `"300/1"`,
+ UserComment: `" "`,
+ CustomRendered: `0`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ Contrast: `0`,
+ MakerNote: `""`,
+ DateTime: `"2009:04:11 03:01:38"`,
+ FNumber: `"28/10"`,
+ ExposureProgram: `2`,
+ Software: `"COOLPIX L18 V1.1"`,
+ ExifIFDPointer: `230`,
+ ExposureTime: `"1/250"`,
+ ISOSpeedRatings: `227`,
+ ComponentsConfiguration: `""`,
+ CompressedBitsPerPixel: `"4/1"`,
+ Saturation: `0`,
+ XResolution: `"300/1"`,
+ ThumbJPEGInterchangeFormatLength: `9697`,
+ ExposureBiasValue: `"0/10"`,
+ LightSource: `0`,
+ FocalLength: `"5700/1000"`,
+ ColorSpace: `1`,
+ PixelYDimension: `2448`,
+ FileSource: `""`,
+ Model: `"COOLPIX L18"`,
+ DateTimeOriginal: `"2009:04:11 03:01:38"`,
+ DateTimeDigitized: `"2009:04:11 03:01:38"`,
+ PixelXDimension: `3264`,
+ InteroperabilityIFDPointer: `33536`,
+ SceneType: `""`,
+ DigitalZoomRatio: `"0/100"`,
+ GainControl: `1`,
+ Make: `"NIKON"`,
+ InteroperabilityIndex: `"R98"`,
+ Sharpness: `1`,
+ ImageDescription: `" "`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ ExifVersion: `"0220"`,
+ MeteringMode: `5`,
+ Flash: `24`,
+ FocalLengthIn35mmFilm: `35`,
+ SubjectDistanceRange: `0`,
+ Orientation: `1`,
+ },
+ "2009-04-23-07-21-35-sep-2009-04-23-07-21-35a.jpg": map[FieldName]string{
+ Sharpness: `0`,
+ MeteringMode: `5`,
+ Flash: `9`,
+ FocalLengthIn35mmFilm: `35`,
+ SubjectDistanceRange: `3`,
+ Orientation: `1`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ ExifVersion: `"0220"`,
+ WhiteBalance: `0`,
+ YResolution: `"72/1"`,
+ ThumbJPEGInterchangeFormat: `31176`,
+ MaxApertureValue: `"28/10"`,
+ FlashpixVersion: `"0100"`,
+ Contrast: `0`,
+ MakerNote: `""`,
+ CustomRendered: `0`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ Software: `"Optio S50 Ver 1.00"`,
+ DateTime: `"2009:04:23 07:21:35"`,
+ FNumber: `"26/10"`,
+ ComponentsConfiguration: `""`,
+ CompressedBitsPerPixel: `"13301888/4915200"`,
+ Saturation: `0`,
+ XResolution: `"72/1"`,
+ ExifIFDPointer: `590`,
+ ExposureTime: `"1/40"`,
+ ISOSpeedRatings: `100`,
+ ColorSpace: `1`,
+ PixelYDimension: `1920`,
+ Model: `"PENTAX Optio S50"`,
+ ThumbJPEGInterchangeFormatLength: `6015`,
+ ExposureBiasValue: `"0/10"`,
+ FocalLength: `"58/10"`,
+ InteroperabilityIFDPointer: `31040`,
+ DigitalZoomRatio: `"0/100"`,
+ InteroperabilityIndex: `"R98"`,
+ Make: `"PENTAX Corporation"`,
+ DateTimeOriginal: `"2009:04:23 07:21:35"`,
+ DateTimeDigitized: `"2009:04:23 07:21:35"`,
+ PixelXDimension: `2560`,
+ },
+ "2009-06-11-19-23-18-sep-2009-06-11-19-23-18a.jpg": map[FieldName]string{
+ ThumbJPEGInterchangeFormat: `606`,
+ ThumbJPEGInterchangeFormatLength: `7150`,
+ ExposureProgram: `1`,
+ ColorSpace: `65535`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ ExifIFDPointer: `264`,
+ ExposureTime: `"1/4"`,
+ DateTimeDigitized: `"2009:06:11 19:23:18"`,
+ MeteringMode: `1`,
+ PixelXDimension: `1400`,
+ PixelYDimension: `2100`,
+ Model: `"Canon EOS DIGITAL REBEL XTi"`,
+ YResolution: `"3500000/10000"`,
+ Software: `"Adobe Photoshop CS3 Macintosh"`,
+ DateTime: `"2009:06:23 18:42:05"`,
+ ApertureValue: `"11257/1627"`,
+ ExposureBiasValue: `"0/1"`,
+ FocalLength: `"47/1"`,
+ Make: `"Canon"`,
+ Orientation: `1`,
+ XResolution: `"3500000/10000"`,
+ ISOSpeedRatings: `200`,
+ ExifVersion: `"0220"`,
+ DateTimeOriginal: `"2009:06:11 19:23:18"`,
+ Flash: `16`,
+ },
+ "2009-06-20-07-59-05-sep-2009-06-20-07-59-05a.jpg": map[FieldName]string{
+ DateTimeOriginal: `"2009:06:20 07:59:05"`,
+ Flash: `89`,
+ ExposureMode: `0`,
+ ExifVersion: `"0221"`,
+ ThumbJPEGInterchangeFormatLength: `4569`,
+ MaxApertureValue: `"36/10"`,
+ ColorSpace: `1`,
+ ExposureIndex: `"160/1"`,
+ WhiteBalance: `0`,
+ Sharpness: `0`,
+ ThumbJPEGInterchangeFormat: `9032`,
+ ExposureTime: `"1/500"`,
+ MeteringMode: `5`,
+ GainControl: `2`,
+ Saturation: `0`,
+ SubjectDistanceRange: `0`,
+ InteroperabilityIndex: `"R98"`,
+ ExifIFDPointer: `514`,
+ ShutterSpeedValue: `"9/1"`,
+ Model: `"KODAK EASYSHARE Z710 ZOOM DIGITAL CAMERA"`,
+ Orientation: `1`,
+ XResolution: `"480/1"`,
+ ISOSpeedRatings: `160`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `8728`,
+ CustomRendered: `0`,
+ DigitalZoomRatio: `"0/100"`,
+ Make: `"EASTMAN KODAK COMPANY"`,
+ SceneCaptureType: `0`,
+ Contrast: `0`,
+ FocalLengthIn35mmFilm: `337`,
+ ExposureProgram: `2`,
+ FileSource: `""`,
+ FNumber: `"35/10"`,
+ YCbCrPositioning: `1`,
+ DateTimeDigitized: `"2009:06:20 07:59:05"`,
+ MakerNote: `""`,
+ PixelXDimension: `3072`,
+ SensingMethod: `2`,
+ SceneType: `""`,
+ ResolutionUnit: `2`,
+ ApertureValue: `"36/10"`,
+ ExposureBiasValue: `"0/3"`,
+ LightSource: `0`,
+ FocalLength: `"559/10"`,
+ FlashpixVersion: `"0100"`,
+ PixelYDimension: `2304`,
+ YResolution: `"480/1"`,
+ },
+ "2009-08-05-08-11-31-sep-2009-08-05-08-11-31a.jpg": map[FieldName]string{
+ XResolution: `"72/1"`,
+ ISOSpeedRatings: `100`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `1158`,
+ FocalPlaneYResolution: `"5292/1"`,
+ CustomRendered: `0`,
+ Make: `"FUJIFILM"`,
+ Orientation: `1`,
+ SceneCaptureType: `0`,
+ FileSource: `""`,
+ FNumber: `"400/100"`,
+ ExposureProgram: `2`,
+ DateTimeDigitized: `"2009:08:05 08:11:31"`,
+ MakerNote: `"FUJIFILM0130" !"#,012NORMAL d"`,
+ PixelXDimension: `2848`,
+ SensingMethod: `2`,
+ SceneType: `""`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ Copyright: `" "`,
+ ApertureValue: `"400/100"`,
+ ExposureBiasValue: `"0/100"`,
+ LightSource: `0`,
+ FocalLength: `"720/100"`,
+ FlashpixVersion: `"0100"`,
+ YResolution: `"72/1"`,
+ DateTime: `"2009:08:05 08:11:31"`,
+ PixelYDimension: `2136`,
+ FocalPlaneXResolution: `"5292/1"`,
+ Flash: `16`,
+ ExposureMode: `0`,
+ ExifVersion: `"0220"`,
+ DateTimeOriginal: `"2009:08:05 08:11:31"`,
+ MaxApertureValue: `"300/100"`,
+ ColorSpace: `1`,
+ WhiteBalance: `1`,
+ Sharpness: `0`,
+ ThumbJPEGInterchangeFormat: `1306`,
+ ThumbJPEGInterchangeFormatLength: `8596`,
+ CompressedBitsPerPixel: `"20/10"`,
+ BrightnessValue: `"719/100"`,
+ MeteringMode: `5`,
+ SubjectDistanceRange: `0`,
+ InteroperabilityIndex: `"R98"`,
+ ExifIFDPointer: `294`,
+ ExposureTime: `"10/3000"`,
+ ShutterSpeedValue: `"820/100"`,
+ FocalPlaneResolutionUnit: `3`,
+ Model: `"FinePix E550 "`,
+ Software: `"Digital Camera FinePix E550 Ver1.00"`,
+ },
+ "2010-06-08-04-44-24-sep-2010-06-08-04-44-24a.jpg": map[FieldName]string{
+ CompressedBitsPerPixel: `"8/1"`,
+ MeteringMode: `5`,
+ MakerNote: `""`,
+ PixelXDimension: `2816`,
+ Saturation: `0`,
+ DateTimeDigitized: `"2010:06:08 04:44:24"`,
+ Model: `"DSC-S600"`,
+ ExposureBiasValue: `"0/10"`,
+ PixelYDimension: `2112`,
+ ImageDescription: `" "`,
+ XResolution: `"72/1"`,
+ ISOSpeedRatings: `80`,
+ ExifVersion: `"0221"`,
+ Flash: `31`,
+ CustomRendered: `0`,
+ Orientation: `1`,
+ ThumbJPEGInterchangeFormatLength: `4029`,
+ ExposureProgram: `2`,
+ MaxApertureValue: `"48/16"`,
+ ThumbJPEGInterchangeFormat: `6892`,
+ YCbCrPositioning: `2`,
+ ExifIFDPointer: `2314`,
+ ExposureTime: `"10/400"`,
+ SceneType: `""`,
+ ResolutionUnit: `2`,
+ DateTime: `"2010:06:08 04:44:24"`,
+ LightSource: `0`,
+ FocalLength: `"51/10"`,
+ FlashpixVersion: `"0100"`,
+ YResolution: `"72/1"`,
+ DateTimeOriginal: `"2010:06:08 04:44:24"`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `6640`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ Contrast: `0`,
+ Make: `"SONY"`,
+ ColorSpace: `1`,
+ FileSource: `""`,
+ WhiteBalance: `0`,
+ Sharpness: `0`,
+ FNumber: `"28/10"`,
+ },
+ "2010-06-20-20-07-39-sep-2010-06-20-20-07-39a.jpg": map[FieldName]string{
+ FocalPlaneYResolution: `"2736000/181"`,
+ CustomRendered: `0`,
+ DigitalZoomRatio: `"3648/3648"`,
+ Orientation: `1`,
+ XResolution: `"4718592/65536"`,
+ ISOSpeedRatings: `800`,
+ ExifVersion: `"0220"`,
+ Flash: `16`,
+ ThumbJPEGInterchangeFormat: `3408`,
+ ThumbJPEGInterchangeFormatLength: `5126`,
+ MaxApertureValue: `"116/32"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ ExifIFDPointer: `302`,
+ ExposureTime: `"1/10"`,
+ FocalLength: `"9681/1000"`,
+ FlashpixVersion: `"0100"`,
+ FocalPlaneXResolution: `"3648000/241"`,
+ YResolution: `"4718592/65536"`,
+ Software: `"QuickTime 7.6.6"`,
+ DateTime: `"2010:10:31 22:39:25"`,
+ ShutterSpeedValue: `"106/32"`,
+ ApertureValue: `"116/32"`,
+ Make: `"Canon"`,
+ DateTimeOriginal: `"2010:06:20 20:07:39"`,
+ ComponentsConfiguration: `""`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ FNumber: `"35/10"`,
+ ColorSpace: `1`,
+ FileSource: `""`,
+ WhiteBalance: `0`,
+ PixelXDimension: `3648`,
+ SensingMethod: `2`,
+ DateTimeDigitized: `"2010:06:20 20:07:39"`,
+ CompressedBitsPerPixel: `"3/1"`,
+ MeteringMode: `5`,
+ MakerNote: `""`,
+ UserComment: `""`,
+ ImageDescription: `" "`,
+ Model: `"Canon PowerShot SD1200 IS"`,
+ ExposureBiasValue: `"0/3"`,
+ PixelYDimension: `2736`,
+ FocalPlaneResolutionUnit: `2`,
+ },
+ "2010-09-02-08-43-02-sep-2010-09-02-08-43-02a.jpg": map[FieldName]string{
+ DateTime: `"2010:09:02 08:43:02"`,
+ ExposureProgram: `5`,
+ ExifVersion: `"0221"`,
+ CompressedBitsPerPixel: `"1/1"`,
+ Flash: `65`,
+ Saturation: `0`,
+ XResolution: `"72/1"`,
+ ISOSpeedRatings: `800`,
+ MaxApertureValue: `"362/100"`,
+ LightSource: `0`,
+ FocalLength: `"210/10"`,
+ ColorSpace: `1`,
+ Model: `"FE370,X880,C575 "`,
+ ThumbJPEGInterchangeFormat: `9204`,
+ SceneType: `""`,
+ DigitalZoomRatio: `"0/100"`,
+ SceneCaptureType: `3`,
+ GainControl: `2`,
+ Contrast: `0`,
+ DateTimeOriginal: `"2010:09:02 08:43:02"`,
+ MakerNote: `""`,
+ FNumber: `"53/10"`,
+ Sharpness: `0`,
+ ImageDescription: `"OLYMPUS DIGITAL CAMERA "`,
+ Software: `"Version 1.0 "`,
+ YCbCrPositioning: `2`,
+ ExifIFDPointer: `996`,
+ ExposureTime: `"10/500"`,
+ ComponentsConfiguration: `""`,
+ MeteringMode: `5`,
+ Orientation: `1`,
+ ResolutionUnit: `2`,
+ ExposureBiasValue: `"0/10"`,
+ FlashpixVersion: `"0100"`,
+ PixelYDimension: `2448`,
+ FileSource: `""`,
+ WhiteBalance: `0`,
+ YResolution: `"72/1"`,
+ ThumbJPEGInterchangeFormatLength: `3562`,
+ UserComment: `" "`,
+ PixelXDimension: `3264`,
+ InteroperabilityIFDPointer: `1714`,
+ CustomRendered: `0`,
+ ExposureMode: `0`,
+ InteroperabilityIndex: `"R98"`,
+ Make: `"OLYMPUS IMAGING CORP. "`,
+ DateTimeDigitized: `"2010:09:02 08:43:02"`,
+ },
+ "2011-01-24-22-06-02-sep-2011-01-24-22-06-02a.jpg": map[FieldName]string{
+ ColorSpace: `1`,
+ WhiteBalance: `0`,
+ ThumbJPEGInterchangeFormat: `25601`,
+ ThumbJPEGInterchangeFormatLength: `3385`,
+ ExifIFDPointer: `157`,
+ PixelXDimension: `1200`,
+ MakerNote: `""`,
+ DateTimeDigitized: `"2011:01:24 22:06:02"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ Software: `"V 12.40"`,
+ FlashpixVersion: `"0100"`,
+ PixelYDimension: `1600`,
+ Model: `"6350"`,
+ YResolution: `"300/1"`,
+ XResolution: `"300/1"`,
+ ExifVersion: `"0220"`,
+ ComponentsConfiguration: `""`,
+ CustomRendered: `0`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ Make: `"Nokia"`,
+ Orientation: `1`,
+ DigitalZoomRatio: `"1024/1024"`,
+ DateTimeOriginal: `"2011:01:24 22:06:02"`,
+ },
+ "2011-03-07-09-28-03-sep-2011-03-07-09-28-03a.jpg": map[FieldName]string{
+ Model: `"GU295"`,
+ Software: `"GU295-MSM1530032L-V10i-APR-22-2010-ATT-US"`,
+ Make: `"LG Elec."`,
+ Orientation: `1`,
+ XResolution: `"72/1"`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `538`,
+ CustomRendered: `1`,
+ DigitalZoomRatio: `"0/0"`,
+ Contrast: `0`,
+ ExposureProgram: `2`,
+ FileSource: `""`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ DateTimeDigitized: `"2011:03:07 09:28:03"`,
+ PixelXDimension: `1280`,
+ SceneType: `""`,
+ YResolution: `"72/1"`,
+ FlashpixVersion: `"0100"`,
+ PixelYDimension: `960`,
+ ExifVersion: `"0220"`,
+ DateTimeOriginal: `"2011:03:07 09:28:03"`,
+ ExposureMode: `0`,
+ ThumbJPEGInterchangeFormat: `662`,
+ ThumbJPEGInterchangeFormatLength: `9850`,
+ ColorSpace: `1`,
+ WhiteBalance: `0`,
+ Sharpness: `0`,
+ ExifIFDPointer: `224`,
+ BrightnessValue: `"0/1024"`,
+ MeteringMode: `2`,
+ Saturation: `0`,
+ InteroperabilityIndex: `"R98"`,
+ },
+ "2011-05-07-13-02-49-sep-2011-05-07-13-02-49a.jpg": map[FieldName]string{
+ DateTimeOriginal: `"2011:05:07 13:02:49"`,
+ SceneType: `""`,
+ Contrast: `0`,
+ Software: `"M7500BSAAAAAAD3050"`,
+ GPSVersionID: `[2,2,0,0]`,
+ GPSLatitudeRef: `"N"`,
+ GPSAltitude: `"0/1"`,
+ Orientation: `1`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ ExifIFDPointer: `218`,
+ GPSInfoIFDPointer: `502`,
+ ComponentsConfiguration: `""`,
+ GPSLongitudeRef: `"E"`,
+ GPSTimeStamp: `["19/1","3/1","43/1"]`,
+ GPSDateStamp: `"2011:05:07 "`,
+ YResolution: `"72/1"`,
+ ThumbJPEGInterchangeFormatLength: `22806`,
+ FlashpixVersion: `"0100"`,
+ PixelYDimension: `1536`,
+ FileSource: `""`,
+ WhiteBalance: `0`,
+ GPSAltitudeRef: `0`,
+ Make: `"HTC"`,
+ DateTimeDigitized: `"2011:05:07 13:02:49"`,
+ PixelXDimension: `2048`,
+ InteroperabilityIFDPointer: `472`,
+ GPSLatitude: `["0/1","0/1","0/100"]`,
+ InteroperabilityIndex: `"R98"`,
+ GPSLongitude: `["0/1","0/1","0/100"]`,
+ XResolution: `"72/1"`,
+ ExifVersion: `"0220"`,
+ GPSProcessingMethod: `"ASCIIHYBRID-FIX"`,
+ Model: `"RAPH800"`,
+ ThumbJPEGInterchangeFormat: `920`,
+ ColorSpace: `1`,
+ GPSMapDatum: `"WGS-84"`,
+ },
+ "2011-08-07-19-22-57-sep-2011-08-07-19-22-57a.jpg": map[FieldName]string{
+ ResolutionUnit: `2`,
+ DateTimeDigitized: `"2011:08:07 19:22:57"`,
+ SensingMethod: `2`,
+ SceneType: `""`,
+ YResolution: `"300/1"`,
+ DateTime: `"2011:08:11 09:46:32"`,
+ ApertureValue: `"433985/100000"`,
+ ExposureBiasValue: `"2/6"`,
+ LightSource: `0`,
+ FocalLength: `"620/10"`,
+ ExifVersion: `"0221"`,
+ DateTimeOriginal: `"2011:08:07 19:22:57"`,
+ Flash: `7`,
+ ExposureMode: `0`,
+ ThumbJPEGInterchangeFormat: `802`,
+ ThumbJPEGInterchangeFormatLength: `9117`,
+ MaxApertureValue: `"43/10"`,
+ WhiteBalance: `0`,
+ Sharpness: `0`,
+ ExifIFDPointer: `186`,
+ ExposureTime: `"1/30"`,
+ MeteringMode: `2`,
+ GainControl: `1`,
+ Saturation: `0`,
+ SubjectDistanceRange: `0`,
+ Model: `"NIKON D200"`,
+ Software: `"Ver.1.00"`,
+ ShutterSpeedValue: `"4906891/1000000"`,
+ SubSecTimeOriginal: `"65"`,
+ SubSecTimeDigitized: `"65"`,
+ FocalLengthIn35mmFilm: `93`,
+ SceneCaptureType: `0`,
+ Make: `"NIKON CORPORATION"`,
+ XResolution: `"300/1"`,
+ ISOSpeedRatings: `400`,
+ CFAPattern: `""`,
+ CustomRendered: `0`,
+ DigitalZoomRatio: `"1/1"`,
+ Contrast: `0`,
+ FNumber: `"45/10"`,
+ ExposureProgram: `3`,
+ SubjectDistance: `"63/100"`,
+ FileSource: `""`,
+ },
+ "2011-10-28-17-50-18-sep-2011-10-28-17-50-18a.jpg": map[FieldName]string{
+ SubSecTime: `"92"`,
+ CustomRendered: `0`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ UserComment: `""`,
+ DateTime: `"2011:11:08 07:27:55"`,
+ FNumber: `"4/1"`,
+ ExposureProgram: `2`,
+ SubSecTimeOriginal: `"92"`,
+ GPSVersionID: `[2,2,0,0]`,
+ Software: `"Adobe Photoshop CS4 Macintosh"`,
+ ExifIFDPointer: `364`,
+ ExposureTime: `"1/60"`,
+ ISOSpeedRatings: `800`,
+ ComponentsConfiguration: `""`,
+ XResolution: `"720000/10000"`,
+ ThumbJPEGInterchangeFormatLength: `6186`,
+ ShutterSpeedValue: `"393216/65536"`,
+ ExposureBiasValue: `"0/1"`,
+ FocalLength: `"34/1"`,
+ ColorSpace: `65535`,
+ PixelYDimension: `864`,
+ FocalPlaneXResolution: `"5616000/1459"`,
+ Model: `"Canon EOS 5D Mark II"`,
+ DateTimeOriginal: `"2011:10:28 17:50:18"`,
+ DateTimeDigitized: `"2011:10:28 17:50:18"`,
+ PixelXDimension: `576`,
+ InteroperabilityIFDPointer: `1120`,
+ InteroperabilityIndex: `"R03"`,
+ Make: `"Canon"`,
+ FocalPlaneResolutionUnit: `2`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ GPSInfoIFDPointer: `1152`,
+ ExifVersion: `"0221"`,
+ MeteringMode: `5`,
+ Flash: `9`,
+ FocalPlaneYResolution: `"3744000/958"`,
+ Orientation: `1`,
+ ThumbJPEGInterchangeFormat: `1266`,
+ ApertureValue: `"262144/65536"`,
+ SubSecTimeDigitized: `"92"`,
+ FlashpixVersion: `"0100"`,
+ WhiteBalance: `1`,
+ YResolution: `"720000/10000"`,
+ },
+ "2011-10-28-18-25-43-sep-2011-10-28-18-25-43.jpg": map[FieldName]string{
+ SubSecTimeOriginal: `"50"`,
+ DateTime: `"2011:10:28 18:25:43"`,
+ ISOSpeedRatings: `1250`,
+ ComponentsConfiguration: `""`,
+ Saturation: `0`,
+ XResolution: `"300/1"`,
+ ExposureTime: `"10/600"`,
+ ColorSpace: `1`,
+ ThumbJPEGInterchangeFormatLength: `3670`,
+ LightSource: `0`,
+ FocalLength: `"800/10"`,
+ CFAPattern: `""`,
+ DigitalZoomRatio: `"1/1"`,
+ InteroperabilityIndex: `"R98"`,
+ Make: `"NIKON CORPORATION"`,
+ DateTimeOriginal: `"2011:10:28 18:25:43"`,
+ InteroperabilityIFDPointer: `3604`,
+ Sharpness: `0`,
+ ExifVersion: `"0221"`,
+ MeteringMode: `5`,
+ Flash: `31`,
+ FocalLengthIn35mmFilm: `120`,
+ Orientation: `1`,
+ YCbCrPositioning: `2`,
+ SubSecTimeDigitized: `"50"`,
+ WhiteBalance: `0`,
+ ThumbJPEGInterchangeFormat: `3728`,
+ SensingMethod: `2`,
+ CustomRendered: `0`,
+ SubSecTime: `"50"`,
+ ExposureProgram: `0`,
+ Software: `"Ver.1.11 "`,
+ FNumber: `"56/10"`,
+ CompressedBitsPerPixel: `"2/1"`,
+ ExifIFDPointer: `208`,
+ FileSource: `""`,
+ Model: `"NIKON D80"`,
+ ExposureBiasValue: `"0/6"`,
+ PixelYDimension: `537`,
+ GainControl: `2`,
+ DateTimeDigitized: `"2011:10:28 18:25:43"`,
+ PixelXDimension: `800`,
+ SceneType: `""`,
+ ImageUniqueID: `"7fa4f6d028df5f2fc1bad8102be81064"`,
+ SubjectDistanceRange: `0`,
+ ResolutionUnit: `2`,
+ FlashpixVersion: `"0100"`,
+ YResolution: `"300/1"`,
+ MaxApertureValue: `"50/10"`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ Contrast: `0`,
+ MakerNote: `""`,
+ UserComment: `"ASCII "`,
+ },
+ "2011-11-18-15-38-34-sep-Photo11181538.jpg": map[FieldName]string{
+ WhiteBalance: `0`,
+ YResolution: `"72/1"`,
+ ThumbJPEGInterchangeFormat: `642`,
+ FlashpixVersion: `"0100"`,
+ CustomRendered: `1`,
+ ExposureMode: `0`,
+ Contrast: `1`,
+ Software: `"M6290A-KPVMZL-2.6.0140T"`,
+ ExposureProgram: `2`,
+ Saturation: `0`,
+ XResolution: `"72/1"`,
+ ExifIFDPointer: `204`,
+ ComponentsConfiguration: `""`,
+ PixelYDimension: `1200`,
+ FileSource: `""`,
+ Model: `"P2020"`,
+ ThumbJPEGInterchangeFormatLength: `12226`,
+ ColorSpace: `1`,
+ BrightnessValue: `"0/1024"`,
+ PixelXDimension: `1600`,
+ InteroperabilityIFDPointer: `518`,
+ SceneType: `""`,
+ DigitalZoomRatio: `"0/0"`,
+ Make: `"PANTECH"`,
+ DateTimeOriginal: `"2011:11:18 15:38:34"`,
+ DateTimeDigitized: `"2011:11:18 15:38:34"`,
+ InteroperabilityIndex: `"R98"`,
+ Sharpness: `0`,
+ ExifVersion: `"0220"`,
+ MeteringMode: `2`,
+ Orientation: `1`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ },
+ "2012-06-02-10-12-28-sep-2012-06-02-10-12-28.jpg": map[FieldName]string{
+ YResolution: `"180/1"`,
+ Software: `"Ver.1.0 "`,
+ DateTime: `"2012:06:02 10:12:28"`,
+ LightSource: `0`,
+ FocalLength: `"50/10"`,
+ FlashpixVersion: `"0100"`,
+ SceneCaptureType: `0`,
+ Contrast: `0`,
+ Make: `"Panasonic"`,
+ DateTimeOriginal: `"2012:06:02 10:12:28"`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `10506`,
+ ExposureMode: `0`,
+ FocalLengthIn35mmFilm: `28`,
+ FNumber: `"33/10"`,
+ ColorSpace: `1`,
+ FileSource: `""`,
+ WhiteBalance: `0`,
+ Sharpness: `0`,
+ GainControl: `0`,
+ Saturation: `0`,
+ DateTimeDigitized: `"2012:06:02 10:12:28"`,
+ CompressedBitsPerPixel: `"4/1"`,
+ MeteringMode: `5`,
+ MakerNote: `""`,
+ PixelXDimension: `4608`,
+ SensingMethod: `2`,
+ Model: `"DMC-FH25"`,
+ ExposureBiasValue: `"0/100"`,
+ PixelYDimension: `3456`,
+ DigitalZoomRatio: `"0/10"`,
+ Orientation: `1`,
+ XResolution: `"180/1"`,
+ ISOSpeedRatings: `100`,
+ ExifVersion: `"0230"`,
+ Flash: `16`,
+ CustomRendered: `0`,
+ ThumbJPEGInterchangeFormat: `11764`,
+ ThumbJPEGInterchangeFormatLength: `7486`,
+ ExposureProgram: `2`,
+ MaxApertureValue: `"441/128"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ ExifIFDPointer: `636`,
+ ExposureTime: `"10/4000"`,
+ SceneType: `""`,
+ InteroperabilityIndex: `"R98"`,
+ },
+ "2012-09-21-22-07-34-sep-2012-09-21-22-07-34.jpg": map[FieldName]string{
+ ThumbJPEGInterchangeFormat: `5108`,
+ ThumbJPEGInterchangeFormatLength: `4855`,
+ MaxApertureValue: `"95/32"`,
+ ColorSpace: `1`,
+ WhiteBalance: `0`,
+ ExifIFDPointer: `240`,
+ ExposureTime: `"1/60"`,
+ CompressedBitsPerPixel: `"3/1"`,
+ MeteringMode: `5`,
+ UserComment: `""`,
+ InteroperabilityIndex: `"R98"`,
+ ImageDescription: `" "`,
+ Model: `"Canon PowerShot SD940 IS"`,
+ ShutterSpeedValue: `"189/32"`,
+ FocalPlaneResolutionUnit: `2`,
+ CustomRendered: `0`,
+ Make: `"Canon"`,
+ Orientation: `1`,
+ XResolution: `"180/1"`,
+ ISOSpeedRatings: `500`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `3288`,
+ FocalPlaneYResolution: `"2448000/183"`,
+ DigitalZoomRatio: `"4000/4000"`,
+ SceneCaptureType: `2`,
+ FNumber: `"28/10"`,
+ FileSource: `""`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ DateTimeDigitized: `"2012:09:21 22:07:34"`,
+ MakerNote: `""`,
+ PixelXDimension: `3264`,
+ SensingMethod: `2`,
+ FocalPlaneXResolution: `"3264000/244"`,
+ YResolution: `"180/1"`,
+ DateTime: `"2012:09:21 22:07:34"`,
+ ApertureValue: `"95/32"`,
+ ExposureBiasValue: `"0/3"`,
+ FocalLength: `"5000/1000"`,
+ FlashpixVersion: `"0100"`,
+ PixelYDimension: `2448`,
+ ExifVersion: `"0221"`,
+ DateTimeOriginal: `"2012:09:21 22:07:34"`,
+ Flash: `25`,
+ ExposureMode: `0`,
+ },
+ "2012-12-19-21-38-40-sep-temple_square1.jpg": map[FieldName]string{
+ InteroperabilityIFDPointer: `322`,
+ GPSLatitude: `["40/1","46/1","1322/100"]`,
+ InteroperabilityIndex: `"R98"`,
+ Make: `"HTC"`,
+ DateTimeOriginal: `"2012:12:19 21:38:40"`,
+ DateTimeDigitized: `"2012:12:19 21:38:40"`,
+ PixelXDimension: `3264`,
+ GPSLatitudeRef: `"N"`,
+ GPSLongitude: `["111/1","53/1","2840/100"]`,
+ GPSLongitudeRef: `"W"`,
+ GPSProcessingMethod: `"ASCIIGPS"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ GPSInfoIFDPointer: `352`,
+ ExifVersion: `"0220"`,
+ GPSMapDatum: `"WGS-84"`,
+ YResolution: `"72/1"`,
+ ThumbJPEGInterchangeFormat: `696`,
+ FlashpixVersion: `"0100"`,
+ GPSAltitudeRef: `0`,
+ GPSVersionID: `[2,2,0]`,
+ GPSAltitude: `"1334/1"`,
+ GPSTimeStamp: `["4/1","38/1","40/1"]`,
+ XResolution: `"72/1"`,
+ ExifIFDPointer: `136`,
+ ISOSpeedRatings: `801`,
+ ComponentsConfiguration: `""`,
+ PixelYDimension: `1952`,
+ GPSDateStamp: `"2012:12:20"`,
+ Model: `"ADR6400L"`,
+ ThumbJPEGInterchangeFormatLength: `38469`,
+ FocalLength: `"457/100"`,
+ ColorSpace: `1`,
+ },
+ "2012-12-21-11-15-19-sep-IMG_0001.jpg": map[FieldName]string{
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ ExifIFDPointer: `360`,
+ ExposureTime: `"1/30"`,
+ InteroperabilityIndex: `"R98"`,
+ SubSecTimeDigitized: `"00"`,
+ FlashpixVersion: `"0100"`,
+ FocalPlaneXResolution: `"5184000/894"`,
+ YResolution: `"72/1"`,
+ DateTime: `"2012:12:21 11:15:19"`,
+ ShutterSpeedValue: `"327680/65536"`,
+ ApertureValue: `"286720/65536"`,
+ FocalLength: `"24/1"`,
+ LensModel: `"EF-S18-55mm f/3.5-5.6 IS II"`,
+ GPSVersionID: `[2,3,0,0]`,
+ InteroperabilityIFDPointer: `8806`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ Make: `"Canon"`,
+ GPSInfoIFDPointer: `9034`,
+ DateTimeOriginal: `"2012:12:21 11:15:19"`,
+ ComponentsConfiguration: `""`,
+ SubSecTime: `"00"`,
+ Artist: `""`,
+ FNumber: `"45/10"`,
+ ColorSpace: `1`,
+ WhiteBalance: `0`,
+ DateTimeDigitized: `"2012:12:21 11:15:19"`,
+ MeteringMode: `5`,
+ MakerNote: `""`,
+ UserComment: `""`,
+ PixelXDimension: `5184`,
+ FocalPlaneResolutionUnit: `2`,
+ Model: `"Canon EOS REBEL T4i"`,
+ Copyright: `""`,
+ ExposureBiasValue: `"0/1"`,
+ SubSecTimeOriginal: `"00"`,
+ PixelYDimension: `3456`,
+ FocalPlaneYResolution: `"3456000/597"`,
+ CustomRendered: `0`,
+ Orientation: `1`,
+ XResolution: `"72/1"`,
+ ISOSpeedRatings: `1600`,
+ ExifVersion: `"0230"`,
+ Flash: `16`,
+ ThumbJPEGInterchangeFormat: `10924`,
+ ThumbJPEGInterchangeFormatLength: `14327`,
+ ExposureProgram: `0`,
+ },
+ "2013-02-05-23-12-09-sep-DSCI0001.jpg": map[FieldName]string{
+ ApertureValue: `"3072/1000"`,
+ ExposureBiasValue: `"0/10"`,
+ FlashpixVersion: `"0100"`,
+ PixelYDimension: `1200`,
+ FileSource: `""`,
+ YResolution: `"288/3"`,
+ ThumbJPEGInterchangeFormatLength: `5863`,
+ ShutterSpeedValue: `"5907/1000"`,
+ WhiteBalance: `0`,
+ InteroperabilityIFDPointer: `4838`,
+ ExposureMode: `0`,
+ InteroperabilityIndex: `"R98"`,
+ Make: `"Polaroid"`,
+ DateTimeDigitized: `"2013:02:05 23:12:09"`,
+ PixelXDimension: `1600`,
+ DateTime: `"2013:02:05 23:12:09"`,
+ ExposureProgram: `2`,
+ CompressedBitsPerPixel: `"3766184/1920000"`,
+ Flash: `1`,
+ FocalLengthIn35mmFilm: `35`,
+ XResolution: `"288/3"`,
+ ISOSpeedRatings: `100`,
+ ExifVersion: `"0210"`,
+ MaxApertureValue: `"3072/1000"`,
+ LightSource: `0`,
+ FocalLength: `"5954/1000"`,
+ ColorSpace: `1`,
+ Model: `"Polaroid i532"`,
+ Copyright: `"Copyright 2005"`,
+ ThumbJPEGInterchangeFormat: `4974`,
+ SceneType: `""`,
+ DigitalZoomRatio: `"100/100"`,
+ SceneCaptureType: `0`,
+ DateTimeOriginal: `"2013:02:05 23:12:09"`,
+ MakerNote: `" BARCODE:A265KS008000; ZP:812; FP:124; AWB:235,679; PWB:476,304; PMF:12,11610; LV:493; LUM:3-8-9-8-1-11;20;26;19;10;A:1,F1:6,F2:18;ET:145, W:2, F:3 ;FV: 41FV: 36FV: 43FV: 223FV: 258FV: 9FV: 466FV: 216FP: 10FP: 8FP: 6FP: 6FP: 6FP: 0FP: 8FP: 8AFS: 110"`,
+ SensingMethod: `2`,
+ Sharpness: `0`,
+ ImageDescription: `""`,
+ Software: `" 1.0"`,
+ FNumber: `"28/10"`,
+ ExifIFDPointer: `240`,
+ ExposureTime: `"1/60"`,
+ ComponentsConfiguration: `""`,
+ MeteringMode: `3`,
+ Orientation: `1`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ },
+ "2099-08-12-19-59-29-sep-2099-08-12-19-59-29a.jpg": map[FieldName]string{
+ Model: `"NIKON D70s"`,
+ ExposureBiasValue: `"0/6"`,
+ SubSecTimeOriginal: `"00"`,
+ PixelYDimension: `2000`,
+ CFAPattern: `""`,
+ CustomRendered: `0`,
+ DigitalZoomRatio: `"1/1"`,
+ Orientation: `1`,
+ XResolution: `"300/1"`,
+ ExifVersion: `"0221"`,
+ Flash: `31`,
+ ThumbJPEGInterchangeFormat: `28588`,
+ ThumbJPEGInterchangeFormatLength: `8886`,
+ ExposureProgram: `0`,
+ MaxApertureValue: `"36/10"`,
+ SceneType: `""`,
+ InteroperabilityIndex: `"R98"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `2`,
+ ExifIFDPointer: `216`,
+ ExposureTime: `"10/600"`,
+ FocalLength: `"180/10"`,
+ SubSecTimeDigitized: `"00"`,
+ FlashpixVersion: `"0100"`,
+ YResolution: `"300/1"`,
+ Software: `"Ver.1.00 "`,
+ DateTime: `"2099:08:12 19:59:29"`,
+ LightSource: `0`,
+ InteroperabilityIFDPointer: `28448`,
+ ExposureMode: `0`,
+ FocalLengthIn35mmFilm: `27`,
+ SceneCaptureType: `0`,
+ Make: `"NIKON CORPORATION"`,
+ DateTimeOriginal: `"2099:08:12 19:59:29"`,
+ ComponentsConfiguration: `""`,
+ SubSecTime: `"00"`,
+ Contrast: `1`,
+ Sharpness: `0`,
+ FNumber: `"35/10"`,
+ ColorSpace: `1`,
+ FileSource: `""`,
+ WhiteBalance: `0`,
+ UserComment: `"ASCII "`,
+ PixelXDimension: `3008`,
+ SensingMethod: `2`,
+ GainControl: `0`,
+ DateTimeDigitized: `"2099:08:12 19:59:29"`,
+ CompressedBitsPerPixel: `"2/1"`,
+ MeteringMode: `5`,
+ MakerNote: `""`,
+ Saturation: `0`,
+ SubjectDistanceRange: `0`,
+ },
+ "2216-11-15-11-46-51-sep-2216-11-15-11-46-51a.jpg": map[FieldName]string{
+ ExposureProgram: `2`,
+ FileSource: `""`,
+ FNumber: `"480/100"`,
+ YCbCrPositioning: `2`,
+ DateTimeDigitized: `"2216:11:15 11:46:51"`,
+ MakerNote: `""`,
+ PixelXDimension: `3296`,
+ SensingMethod: `2`,
+ SceneType: `""`,
+ ResolutionUnit: `2`,
+ ApertureValue: `"452/100"`,
+ ExposureBiasValue: `"0/10"`,
+ LightSource: `0`,
+ FocalLength: `"60/10"`,
+ FlashpixVersion: `"0100"`,
+ PixelYDimension: `2472`,
+ YResolution: `"480/1"`,
+ DateTimeOriginal: `"2216:11:15 11:46:51"`,
+ Flash: `24`,
+ ExposureMode: `0`,
+ ExifVersion: `"0221"`,
+ ThumbJPEGInterchangeFormatLength: `5175`,
+ MaxApertureValue: `"286/100"`,
+ ColorSpace: `1`,
+ ExposureIndex: `"80/1"`,
+ WhiteBalance: `0`,
+ Sharpness: `0`,
+ ThumbJPEGInterchangeFormat: `17818`,
+ ExposureTime: `"1016/1000000"`,
+ MeteringMode: `5`,
+ GainControl: `0`,
+ Saturation: `0`,
+ SubjectDistanceRange: `0`,
+ ExifIFDPointer: `2316`,
+ Software: `"KODAK EASYSHARE C813 ZOOM DIGITAL CAMERA"`,
+ ShutterSpeedValue: `"994/100"`,
+ Model: `"KODAK EASYSHARE C813 ZOOM DIGITAL CAMERA"`,
+ Orientation: `1`,
+ XResolution: `"480/1"`,
+ ISOSpeedRatings: `80`,
+ ComponentsConfiguration: `""`,
+ InteroperabilityIFDPointer: `17674`,
+ CustomRendered: `0`,
+ DigitalZoomRatio: `"0/10"`,
+ Make: `"EASTMAN KODAK COMPANY"`,
+ SceneCaptureType: `0`,
+ Contrast: `0`,
+ FocalLengthIn35mmFilm: `36`,
+ },
+ "FailedHash-NoDate-sep-remembory.jpg": map[FieldName]string{
+ Model: `"MFC-7840W"`,
+ YResolution: `"150/1"`,
+ Software: `"Apple Image Capture"`,
+ PixelYDimension: `1626`,
+ ExifIFDPointer: `192`,
+ PixelXDimension: `1232`,
+ Make: `"Brother"`,
+ Orientation: `1`,
+ XResolution: `"150/1"`,
+ ResolutionUnit: `2`,
+ },
+ "f1-exif.jpg": map[FieldName]string{
+ PixelXDimension: `0`,
+ Orientation: `1`,
+ XResolution: `"72/1"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ ExifIFDPointer: `134`,
+ ExifVersion: `"0210"`,
+ ComponentsConfiguration: `""`,
+ YResolution: `"72/1"`,
+ DateTime: `"2012:11:04 05:42:02"`,
+ FlashpixVersion: `"0100"`,
+ ColorSpace: `65535`,
+ PixelYDimension: `0`,
+ },
+ "f2-exif.jpg": map[FieldName]string{
+ FlashpixVersion: `"0100"`,
+ ColorSpace: `65535`,
+ PixelYDimension: `0`,
+ YResolution: `"72/1"`,
+ DateTime: `"2012:11:04 05:42:32"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ ExifIFDPointer: `134`,
+ ExifVersion: `"0210"`,
+ ComponentsConfiguration: `""`,
+ PixelXDimension: `0`,
+ Orientation: `2`,
+ XResolution: `"72/1"`,
+ },
+ "f3-exif.jpg": map[FieldName]string{
+ FlashpixVersion: `"0100"`,
+ ColorSpace: `65535`,
+ PixelYDimension: `0`,
+ YResolution: `"72/1"`,
+ DateTime: `"2012:11:04 05:42:32"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ ExifIFDPointer: `134`,
+ ExifVersion: `"0210"`,
+ ComponentsConfiguration: `""`,
+ PixelXDimension: `0`,
+ Orientation: `3`,
+ XResolution: `"72/1"`,
+ },
+ "f4-exif.jpg": map[FieldName]string{
+ ExifVersion: `"0210"`,
+ ComponentsConfiguration: `""`,
+ PixelXDimension: `0`,
+ Orientation: `4`,
+ XResolution: `"72/1"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ ExifIFDPointer: `134`,
+ YResolution: `"72/1"`,
+ DateTime: `"2012:11:04 05:42:32"`,
+ FlashpixVersion: `"0100"`,
+ ColorSpace: `65535`,
+ PixelYDimension: `0`,
+ },
+ "f5-exif.jpg": map[FieldName]string{
+ ExifIFDPointer: `134`,
+ ExifVersion: `"0210"`,
+ ComponentsConfiguration: `""`,
+ PixelXDimension: `0`,
+ Orientation: `5`,
+ XResolution: `"72/1"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ PixelYDimension: `0`,
+ YResolution: `"72/1"`,
+ DateTime: `"2012:11:04 05:42:32"`,
+ FlashpixVersion: `"0100"`,
+ ColorSpace: `65535`,
+ },
+ "f6-exif.jpg": map[FieldName]string{
+ YResolution: `"72/1"`,
+ DateTime: `"2012:11:04 05:42:32"`,
+ FlashpixVersion: `"0100"`,
+ ColorSpace: `65535`,
+ PixelYDimension: `0`,
+ ExifVersion: `"0210"`,
+ ComponentsConfiguration: `""`,
+ PixelXDimension: `0`,
+ Orientation: `6`,
+ XResolution: `"72/1"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ ExifIFDPointer: `134`,
+ },
+ "f7-exif.jpg": map[FieldName]string{
+ ExifIFDPointer: `134`,
+ ExifVersion: `"0210"`,
+ ComponentsConfiguration: `""`,
+ PixelXDimension: `0`,
+ Orientation: `7`,
+ XResolution: `"72/1"`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ PixelYDimension: `0`,
+ YResolution: `"72/1"`,
+ DateTime: `"2012:11:04 05:42:32"`,
+ FlashpixVersion: `"0100"`,
+ ColorSpace: `65535`,
+ },
+ "f8-exif.jpg": map[FieldName]string{
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ ExifIFDPointer: `134`,
+ ExifVersion: `"0210"`,
+ ComponentsConfiguration: `""`,
+ PixelXDimension: `0`,
+ Orientation: `8`,
+ XResolution: `"72/1"`,
+ FlashpixVersion: `"0100"`,
+ ColorSpace: `65535`,
+ PixelYDimension: `0`,
+ YResolution: `"72/1"`,
+ DateTime: `"2012:11:04 05:42:32"`,
+ },
+ "geodegrees_as_string.jpg": map[FieldName]string{
+ GPSAltitudeRef: `0`,
+ ThumbJPEGInterchangeFormat: `539`,
+ ThumbJPEGInterchangeFormatLength: `13132`,
+ WhiteBalance: `0`,
+ ExposureProgram: `0`,
+ Sharpness: `2`,
+ ExifIFDPointer: `114`,
+ ExposureTime: `"0/1024"`,
+ Saturation: `0`,
+ GPSLatitude: `"52,00000,50,00000,34,01180"`,
+ GPSTimeStamp: `"17,00000,8,00000,29,00000"`,
+ Model: `"HTC One_M8"`,
+ ApertureValue: `"2048/1024"`,
+ FocalLength: `"3072/1024"`,
+ GPSLatitudeRef: `"N"`,
+ GPSLongitude: `"11,00000,10,00000,58,28360"`,
+ GPSAltitude: `"0/1024"`,
+ GPSLongitudeRef: `"E"`,
+ GPSProcessingMethod: `"ASCII"`,
+ GPSInfoIFDPointer: `317`,
+ Make: `"HTC"`,
+ DateTimeOriginal: `"2014:04:26 19:09:19"`,
+ ISOSpeedRatings: `125`,
+ Contrast: `0`,
+ },
+ "has-lens-info.jpg": map[FieldName]string{
+ LensModel: `"iPhone 4S back camera 4.28mm f/2.4"`,
+ Model: `"iPhone 4S"`,
+ ThumbJPEGInterchangeFormatLength: `10875`,
+ ShutterSpeedValue: `"106906/10353"`,
+ FocalLength: `"107/25"`,
+ SubjectArea: `[1631,1223,881,881]`,
+ ColorSpace: `1`,
+ PixelYDimension: `2448`,
+ GPSLatitude: `["59/1","19/1","5717/100"]`,
+ Make: `"Apple"`,
+ DateTimeOriginal: `"2014:09:01 15:03:47"`,
+ DateTimeDigitized: `"2014:09:01 15:03:47"`,
+ BrightnessValue: `"3927/419"`,
+ PixelXDimension: `3264`,
+ SceneType: `""`,
+ LensMake: `"Apple"`,
+ GPSLatitudeRef: `"N"`,
+ GPSLongitude: `["18/1","3/1","5379/100"]`,
+ FocalLengthIn35mmFilm: `35`,
+ Orientation: `6`,
+ ResolutionUnit: `2`,
+ YCbCrPositioning: `1`,
+ GPSInfoIFDPointer: `948`,
+ ExifVersion: `"0221"`,
+ MeteringMode: `5`,
+ Flash: `16`,
+ GPSLongitudeRef: `"E"`,
+ YResolution: `"72/1"`,
+ ThumbJPEGInterchangeFormat: `1244`,
+ ApertureValue: `"4845/1918"`,
+ SubSecTimeDigitized: `"880"`,
+ FlashpixVersion: `"0100"`,
+ WhiteBalance: `0`,
+ GPSAltitudeRef: `0`,
+ MakerNote: `""`,
+ SensingMethod: `2`,
+ ExposureMode: `0`,
+ SceneCaptureType: `0`,
+ GPSImgDirection: `"18329/175"`,
+ Software: `"7.1.1"`,
+ DateTime: `"2014:09:01 15:03:47"`,
+ FNumber: `"12/5"`,
+ ExposureProgram: `2`,
+ SubSecTimeOriginal: `"880"`,
+ GPSImgDirectionRef: `"T"`,
+ XResolution: `"72/1"`,
+ ExifIFDPointer: `204`,
+ ExposureTime: `"1/1284"`,
+ ISOSpeedRatings: `50`,
+ ComponentsConfiguration: `""`,
+ GPSAltitude: `"29/1"`,
+ GPSTimeStamp: `["13/1","3/1","4279/100"]`,
+ },
+}
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2004-01-11-22-45-15-sep-2004-01-11-22-45-15a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2004-01-11-22-45-15-sep-2004-01-11-22-45-15a.jpg
new file mode 100644
index 000000000..6f3be2480
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2004-01-11-22-45-15-sep-2004-01-11-22-45-15a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2006-08-03-16-29-38-sep-2006-08-03-16-29-38a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2006-08-03-16-29-38-sep-2006-08-03-16-29-38a.jpg
new file mode 100644
index 000000000..39891df84
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2006-08-03-16-29-38-sep-2006-08-03-16-29-38a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2006-11-11-19-17-56-sep-2006-11-11-19-17-56a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2006-11-11-19-17-56-sep-2006-11-11-19-17-56a.jpg
new file mode 100644
index 000000000..4721e7542
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2006-11-11-19-17-56-sep-2006-11-11-19-17-56a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2006-12-10-23-58-20-sep-2006-12-10-23-58-20a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2006-12-10-23-58-20-sep-2006-12-10-23-58-20a.jpg
new file mode 100644
index 000000000..8c0997ea0
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2006-12-10-23-58-20-sep-2006-12-10-23-58-20a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2006-12-17-07-09-14-sep-2006-12-17-07-09-14a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2006-12-17-07-09-14-sep-2006-12-17-07-09-14a.jpg
new file mode 100644
index 000000000..1c6e7601d
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2006-12-17-07-09-14-sep-2006-12-17-07-09-14a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2006-12-21-15-55-26-sep-2006-12-21-15-55-26a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2006-12-21-15-55-26-sep-2006-12-21-15-55-26a.jpg
new file mode 100644
index 000000000..8aaf632be
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2006-12-21-15-55-26-sep-2006-12-21-15-55-26a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-01-01-12-00-00-sep-2007-01-01-12-00-00a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-01-01-12-00-00-sep-2007-01-01-12-00-00a.jpg
new file mode 100644
index 000000000..c44db32c1
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-01-01-12-00-00-sep-2007-01-01-12-00-00a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-01-17-21-49-44-sep-2007-01-17-21-49-44a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-01-17-21-49-44-sep-2007-01-17-21-49-44a.jpg
new file mode 100644
index 000000000..f025460d6
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-01-17-21-49-44-sep-2007-01-17-21-49-44a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-02-02-18-13-29-sep-2007-02-02-18-13-29a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-02-02-18-13-29-sep-2007-02-02-18-13-29a.jpg
new file mode 100644
index 000000000..3f1fbfbdf
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-02-02-18-13-29-sep-2007-02-02-18-13-29a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-02-17-02-21-sep-2007-05-02-17-02-21a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-02-17-02-21-sep-2007-05-02-17-02-21a.jpg
new file mode 100644
index 000000000..351935778
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-02-17-02-21-sep-2007-05-02-17-02-21a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-12-08-19-07-sep-2007-05-12-08-19-07a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-12-08-19-07-sep-2007-05-12-08-19-07a.jpg
new file mode 100644
index 000000000..175b60663
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-12-08-19-07-sep-2007-05-12-08-19-07a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-26-04-49-45-sep-2007-05-26-04-49-45a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-26-04-49-45-sep-2007-05-26-04-49-45a.jpg
new file mode 100644
index 000000000..90a6c92b0
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-26-04-49-45-sep-2007-05-26-04-49-45a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-30-14-28-01-sep-2007-05-30-14-28-01a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-30-14-28-01-sep-2007-05-30-14-28-01a.jpg
new file mode 100644
index 000000000..74f30c351
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-05-30-14-28-01-sep-2007-05-30-14-28-01a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-06-06-16-15-25-sep-2007-06-06-16-15-25a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-06-06-16-15-25-sep-2007-06-06-16-15-25a.jpg
new file mode 100644
index 000000000..0a025a0b8
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-06-06-16-15-25-sep-2007-06-06-16-15-25a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-06-26-10-13-04-sep-2007-06-26-10-13-04a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-06-26-10-13-04-sep-2007-06-26-10-13-04a.jpg
new file mode 100644
index 000000000..526cefafd
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-06-26-10-13-04-sep-2007-06-26-10-13-04a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-07-13-17-02-30-sep-2007-07-13-17-02-30a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-07-13-17-02-30-sep-2007-07-13-17-02-30a.jpg
new file mode 100644
index 000000000..c39e90fca
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-07-13-17-02-30-sep-2007-07-13-17-02-30a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-08-15-14-42-46-sep-2007-08-15-14-42-46a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-08-15-14-42-46-sep-2007-08-15-14-42-46a.jpg
new file mode 100644
index 000000000..81be2a200
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-08-15-14-42-46-sep-2007-08-15-14-42-46a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-08-24-02-40-42-sep-2007-08-24-02-40-42a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-08-24-02-40-42-sep-2007-08-24-02-40-42a.jpg
new file mode 100644
index 000000000..aa457643d
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-08-24-02-40-42-sep-2007-08-24-02-40-42a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-11-07-11-40-44-sep-2007-11-07-11-40-44a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-11-07-11-40-44-sep-2007-11-07-11-40-44a.jpg
new file mode 100644
index 000000000..916a2b6c3
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2007-11-07-11-40-44-sep-2007-11-07-11-40-44a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2008-06-02-10-03-57-sep-2008-06-02-10-03-57a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2008-06-02-10-03-57-sep-2008-06-02-10-03-57a.jpg
new file mode 100644
index 000000000..0aedf3003
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2008-06-02-10-03-57-sep-2008-06-02-10-03-57a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2008-06-06-13-29-29-sep-2008-06-06-13-29-29a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2008-06-06-13-29-29-sep-2008-06-06-13-29-29a.jpg
new file mode 100644
index 000000000..a291900e3
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2008-06-06-13-29-29-sep-2008-06-06-13-29-29a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2008-06-17-01-21-30-sep-2008-06-17-01-21-30a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2008-06-17-01-21-30-sep-2008-06-17-01-21-30a.jpg
new file mode 100644
index 000000000..805d1d0f0
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2008-06-17-01-21-30-sep-2008-06-17-01-21-30a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2008-09-02-17-43-48-sep-2008-09-02-17-43-48a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2008-09-02-17-43-48-sep-2008-09-02-17-43-48a.jpg
new file mode 100644
index 000000000..c866423c7
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2008-09-02-17-43-48-sep-2008-09-02-17-43-48a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-03-26-09-23-20-sep-2009-03-26-09-23-20a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-03-26-09-23-20-sep-2009-03-26-09-23-20a.jpg
new file mode 100644
index 000000000..761bf6488
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-03-26-09-23-20-sep-2009-03-26-09-23-20a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-04-11-03-01-38-sep-2009-04-11-03-01-38a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-04-11-03-01-38-sep-2009-04-11-03-01-38a.jpg
new file mode 100644
index 000000000..484fe3759
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-04-11-03-01-38-sep-2009-04-11-03-01-38a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-04-23-07-21-35-sep-2009-04-23-07-21-35a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-04-23-07-21-35-sep-2009-04-23-07-21-35a.jpg
new file mode 100644
index 000000000..f39db7d9a
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-04-23-07-21-35-sep-2009-04-23-07-21-35a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-06-11-19-23-18-sep-2009-06-11-19-23-18a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-06-11-19-23-18-sep-2009-06-11-19-23-18a.jpg
new file mode 100644
index 000000000..599764bf8
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-06-11-19-23-18-sep-2009-06-11-19-23-18a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-06-20-07-59-05-sep-2009-06-20-07-59-05a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-06-20-07-59-05-sep-2009-06-20-07-59-05a.jpg
new file mode 100644
index 000000000..8718269e9
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-06-20-07-59-05-sep-2009-06-20-07-59-05a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-08-05-08-11-31-sep-2009-08-05-08-11-31a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-08-05-08-11-31-sep-2009-08-05-08-11-31a.jpg
new file mode 100644
index 000000000..9598b2136
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2009-08-05-08-11-31-sep-2009-08-05-08-11-31a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2010-06-08-04-44-24-sep-2010-06-08-04-44-24a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2010-06-08-04-44-24-sep-2010-06-08-04-44-24a.jpg
new file mode 100644
index 000000000..33f7d9b20
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2010-06-08-04-44-24-sep-2010-06-08-04-44-24a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2010-06-20-20-07-39-sep-2010-06-20-20-07-39a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2010-06-20-20-07-39-sep-2010-06-20-20-07-39a.jpg
new file mode 100644
index 000000000..ec2faa1a9
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2010-06-20-20-07-39-sep-2010-06-20-20-07-39a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2010-09-02-08-43-02-sep-2010-09-02-08-43-02a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2010-09-02-08-43-02-sep-2010-09-02-08-43-02a.jpg
new file mode 100644
index 000000000..3b7f906db
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2010-09-02-08-43-02-sep-2010-09-02-08-43-02a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-01-24-22-06-02-sep-2011-01-24-22-06-02a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-01-24-22-06-02-sep-2011-01-24-22-06-02a.jpg
new file mode 100644
index 000000000..1a4af42d3
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-01-24-22-06-02-sep-2011-01-24-22-06-02a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-03-07-09-28-03-sep-2011-03-07-09-28-03a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-03-07-09-28-03-sep-2011-03-07-09-28-03a.jpg
new file mode 100644
index 000000000..42d347656
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-03-07-09-28-03-sep-2011-03-07-09-28-03a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-05-07-13-02-49-sep-2011-05-07-13-02-49a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-05-07-13-02-49-sep-2011-05-07-13-02-49a.jpg
new file mode 100644
index 000000000..7e84ec481
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-05-07-13-02-49-sep-2011-05-07-13-02-49a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-08-07-19-22-57-sep-2011-08-07-19-22-57a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-08-07-19-22-57-sep-2011-08-07-19-22-57a.jpg
new file mode 100644
index 000000000..16fad2ecb
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-08-07-19-22-57-sep-2011-08-07-19-22-57a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-10-28-17-50-18-sep-2011-10-28-17-50-18a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-10-28-17-50-18-sep-2011-10-28-17-50-18a.jpg
new file mode 100644
index 000000000..f6020a8c9
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-10-28-17-50-18-sep-2011-10-28-17-50-18a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-10-28-18-25-43-sep-2011-10-28-18-25-43.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-10-28-18-25-43-sep-2011-10-28-18-25-43.jpg
new file mode 100644
index 000000000..3aa541878
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-10-28-18-25-43-sep-2011-10-28-18-25-43.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-11-18-15-38-34-sep-Photo11181538.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-11-18-15-38-34-sep-Photo11181538.jpg
new file mode 100644
index 000000000..48ef933a2
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2011-11-18-15-38-34-sep-Photo11181538.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2012-06-02-10-12-28-sep-2012-06-02-10-12-28.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2012-06-02-10-12-28-sep-2012-06-02-10-12-28.jpg
new file mode 100644
index 000000000..f83270eee
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2012-06-02-10-12-28-sep-2012-06-02-10-12-28.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2012-09-21-22-07-34-sep-2012-09-21-22-07-34.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2012-09-21-22-07-34-sep-2012-09-21-22-07-34.jpg
new file mode 100644
index 000000000..5cdb55aac
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2012-09-21-22-07-34-sep-2012-09-21-22-07-34.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2012-12-19-21-38-40-sep-temple_square1.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2012-12-19-21-38-40-sep-temple_square1.jpg
new file mode 100644
index 000000000..4cc074f8e
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2012-12-19-21-38-40-sep-temple_square1.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2012-12-21-11-15-19-sep-IMG_0001.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2012-12-21-11-15-19-sep-IMG_0001.jpg
new file mode 100644
index 000000000..ba23c3c42
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2012-12-21-11-15-19-sep-IMG_0001.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2013-02-05-23-12-09-sep-DSCI0001.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2013-02-05-23-12-09-sep-DSCI0001.jpg
new file mode 100644
index 000000000..0396148af
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2013-02-05-23-12-09-sep-DSCI0001.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2099-08-12-19-59-29-sep-2099-08-12-19-59-29a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2099-08-12-19-59-29-sep-2099-08-12-19-59-29a.jpg
new file mode 100644
index 000000000..9729182b3
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2099-08-12-19-59-29-sep-2099-08-12-19-59-29a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/2216-11-15-11-46-51-sep-2216-11-15-11-46-51a.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/2216-11-15-11-46-51-sep-2216-11-15-11-46-51a.jpg
new file mode 100644
index 000000000..ae53a397a
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/2216-11-15-11-46-51-sep-2216-11-15-11-46-51a.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/FailedHash-NoDate-sep-remembory.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/FailedHash-NoDate-sep-remembory.jpg
new file mode 100644
index 000000000..9fb415124
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/FailedHash-NoDate-sep-remembory.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/f1-exif.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/f1-exif.jpg
new file mode 100644
index 000000000..ff003e394
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/f1-exif.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/f2-exif.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/f2-exif.jpg
new file mode 100644
index 000000000..7e0f170e3
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/f2-exif.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/f3-exif.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/f3-exif.jpg
new file mode 100644
index 000000000..3ed7b16a7
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/f3-exif.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/f4-exif.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/f4-exif.jpg
new file mode 100644
index 000000000..0e081f919
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/f4-exif.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/f5-exif.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/f5-exif.jpg
new file mode 100644
index 000000000..e8d875479
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/f5-exif.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/f6-exif.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/f6-exif.jpg
new file mode 100644
index 000000000..4e2c86415
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/f6-exif.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/f7-exif.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/f7-exif.jpg
new file mode 100644
index 000000000..b5dddea44
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/f7-exif.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/f8-exif.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/f8-exif.jpg
new file mode 100644
index 000000000..fb050fc6d
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/f8-exif.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/geodegrees_as_string.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/geodegrees_as_string.jpg
new file mode 100644
index 000000000..280a70ec4
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/geodegrees_as_string.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exif/samples/has-lens-info.jpg b/vendor/github.com/rwcarlsen/goexif/exif/samples/has-lens-info.jpg
new file mode 100644
index 000000000..57757da33
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exif/samples/has-lens-info.jpg
Binary files differ
diff --git a/vendor/github.com/rwcarlsen/goexif/exifstat/main.go b/vendor/github.com/rwcarlsen/goexif/exifstat/main.go
new file mode 100644
index 000000000..0b383c9d5
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/exifstat/main.go
@@ -0,0 +1,60 @@
+package main
+
+import (
+ "flag"
+ "fmt"
+ "log"
+ "os"
+
+ "github.com/rwcarlsen/goexif/exif"
+ "github.com/rwcarlsen/goexif/mknote"
+ "github.com/rwcarlsen/goexif/tiff"
+)
+
+var mnote = flag.Bool("mknote", false, "try to parse makernote data")
+var thumb = flag.Bool("thumb", false, "dump thumbail data to stdout (for first listed image file)")
+
+func main() {
+ flag.Parse()
+ fnames := flag.Args()
+
+ if *mnote {
+ exif.RegisterParsers(mknote.All...)
+ }
+
+ for _, name := range fnames {
+ f, err := os.Open(name)
+ if err != nil {
+ log.Printf("err on %v: %v", name, err)
+ continue
+ }
+
+ x, err := exif.Decode(f)
+ if err != nil {
+ log.Printf("err on %v: %v", name, err)
+ continue
+ }
+
+ if *thumb {
+ data, err := x.JpegThumbnail()
+ if err != nil {
+ log.Fatal("no thumbnail present")
+ }
+ if _, err := os.Stdout.Write(data); err != nil {
+ log.Fatal(err)
+ }
+ return
+ }
+
+ fmt.Printf("\n---- Image '%v' ----\n", name)
+ x.Walk(Walker{})
+ }
+}
+
+type Walker struct{}
+
+func (_ Walker) Walk(name exif.FieldName, tag *tiff.Tag) error {
+ data, _ := tag.MarshalJSON()
+ fmt.Printf(" %v: %v\n", name, string(data))
+ return nil
+}
diff --git a/vendor/github.com/rwcarlsen/goexif/mknote/fields.go b/vendor/github.com/rwcarlsen/goexif/mknote/fields.go
new file mode 100644
index 000000000..e67d11c20
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/mknote/fields.go
@@ -0,0 +1,268 @@
+package mknote
+
+import "github.com/rwcarlsen/goexif/exif"
+
+// Useful resources used in creating these tables:
+// http://www.exiv2.org/makernote.html
+// http://www.exiv2.org/tags-canon.html
+// http://www.exiv2.org/tags-nikon.html
+
+// Known Maker Note fields
+const (
+ // common fields
+ ISOSpeed exif.FieldName = "ISOSpeed"
+ ColorMode = "ColorMode"
+ Quality = "Quality"
+ Sharpening = "Sharpening"
+ Focus = "Focus"
+ FlashSetting = "FlashSetting"
+ FlashDevice = "FlashDevice"
+ WhiteBalanceBias = "WhiteBalanceBias"
+ WB_RBLevels = "WB_RBLevels"
+ ProgramShift = "ProgramShift"
+ ExposureDiff = "ExposureDiff"
+ ISOSelection = "ISOSelection"
+ DataDump = "DataDump"
+ Preview = "Preview"
+ FlashComp = "FlashComp"
+ ISOSettings = "ISOSettings"
+ ImageBoundary = "ImageBoundary"
+ FlashExposureComp = "FlashExposureComp"
+ FlashBracketComp = "FlashBracketComp"
+ ExposureBracketComp = "ExposureBracketComp"
+ ImageProcessing = "ImageProcessing"
+ CropHiSpeed = "CropHiSpeed"
+ ExposureTuning = "ExposureTuning"
+ SerialNumber = "SerialNumber"
+ ImageAuthentication = "ImageAuthentication"
+ ActiveDLighting = "ActiveDLighting"
+ VignetteControl = "VignetteControl"
+ ImageAdjustment = "ImageAdjustment"
+ ToneComp = "ToneComp"
+ AuxiliaryLens = "AuxiliaryLens"
+ LensType = "LensType"
+ Lens = "Lens"
+ FocusDistance = "FocusDistance"
+ DigitalZoom = "DigitalZoom"
+ FlashMode = "FlashMode"
+ ShootingMode = "ShootingMode"
+ AutoBracketRelease = "AutoBracketRelease"
+ LensFStops = "LensFStops"
+ ContrastCurve = "ContrastCurve"
+ ColorHue = "ColorHue"
+ SceneMode = "SceneMode"
+ HueAdjustment = "HueAdjustment"
+ NEFCompression = "NEFCompression"
+ NoiseReduction = "NoiseReduction"
+ LinearizationTable = "LinearizationTable"
+ RawImageCenter = "RawImageCenter"
+ SensorPixelSize = "SensorPixelSize"
+ SceneAssist = "SceneAssist"
+ RetouchHistory = "RetouchHistory"
+ ImageDataSize = "ImageDataSize"
+ ImageCount = "ImageCount"
+ DeletedImageCount = "DeletedImageCount"
+ ShutterCount = "ShutterCount"
+ ImageOptimization = "ImageOptimization"
+ SaturationText = "SaturationText"
+ VariProgram = "VariProgram"
+ ImageStabilization = "ImageStabilization"
+ AFResponse = "AFResponse"
+ HighISONoiseReduction = "HighISONoiseReduction"
+ ToningEffect = "ToningEffect"
+ PrintIM = "PrintIM"
+ CaptureData = "CaptureData"
+ CaptureVersion = "CaptureVersion"
+ CaptureOffsets = "CaptureOffsets"
+ ScanIFD = "ScanIFD"
+ ICCProfile = "ICCProfile"
+ CaptureOutput = "CaptureOutput"
+ Panorama = "Panorama"
+ ImageType = "ImageType"
+ FirmwareVersion = "FirmwareVersion"
+ FileNumber = "FileNumber"
+ OwnerName = "OwnerName"
+ CameraInfo = "CameraInfo"
+ CustomFunctions = "CustomFunctions"
+ ModelID = "ModelID"
+ PictureInfo = "PictureInfo"
+ ThumbnailImageValidArea = "ThumbnailImageValidArea"
+ SerialNumberFormat = "SerialNumberFormat"
+ SuperMacro = "SuperMacro"
+ OriginalDecisionDataOffset = "OriginalDecisionDataOffset"
+ WhiteBalanceTable = "WhiteBalanceTable"
+ LensModel = "LensModel"
+ InternalSerialNumber = "InternalSerialNumber"
+ DustRemovalData = "DustRemovalData"
+ ProcessingInfo = "ProcessingInfo"
+ MeasuredColor = "MeasuredColor"
+ VRDOffset = "VRDOffset"
+ SensorInfo = "SensorInfo"
+ ColorData = "ColorData"
+
+ // Nikon-specific fields
+ Nikon_Version = "Nikon.Version"
+ Nikon_WhiteBalance = "Nikon.WhiteBalance"
+ Nikon_ColorSpace = "Nikon.ColorSpace"
+ Nikon_LightSource = "Nikon.LightSource"
+ Nikon_Saturation = "Nikon_Saturation"
+ Nikon_ShotInfo = "Nikon.ShotInfo" // A sub-IFD
+ Nikon_VRInfo = "Nikon.VRInfo" // A sub-IFD
+ Nikon_PictureControl = "Nikon.PictureControl" // A sub-IFD
+ Nikon_WorldTime = "Nikon.WorldTime" // A sub-IFD
+ Nikon_ISOInfo = "Nikon.ISOInfo" // A sub-IFD
+ Nikon_AFInfo = "Nikon.AFInfo" // A sub-IFD
+ Nikon_ColorBalance = "Nikon.ColorBalance" // A sub-IFD
+ Nikon_LensData = "Nikon.LensData" // A sub-IFD
+ Nikon_SerialNO = "Nikon.SerialNO" // usually starts with "NO="
+ Nikon_FlashInfo = "Nikon.FlashInfo" // A sub-IFD
+ Nikon_MultiExposure = "Nikon.MultiExposure" // A sub-IFD
+ Nikon_AFInfo2 = "Nikon.AFInfo2" // A sub-IFD
+ Nikon_FileInfo = "Nikon.FileInfo" // A sub-IFD
+ Nikon_AFTune = "Nikon.AFTune" // A sub-IFD
+ Nikon3_0x000a = "Nikon3.0x000a"
+ Nikon3_0x009b = "Nikon3.0x009b"
+ Nikon3_0x009f = "Nikon3.0x009f"
+ Nikon3_0x00a3 = "Nikon3.0x00a3"
+
+ // Canon-specific fiends
+ Canon_CameraSettings = "Canon.CameraSettings" // A sub-IFD
+ Canon_ShotInfo = "Canon.ShotInfo" // A sub-IFD
+ Canon_AFInfo = "Canon.AFInfo"
+ Canon_0x0000 = "Canon.0x0000"
+ Canon_0x0003 = "Canon.0x0003"
+ Canon_0x00b5 = "Canon.0x00b5"
+ Canon_0x00c0 = "Canon.0x00c0"
+ Canon_0x00c1 = "Canon.0x00c1"
+)
+
+var makerNoteCanonFields = map[uint16]exif.FieldName{
+ 0x0000: Canon_0x0000,
+ 0x0001: Canon_CameraSettings,
+ 0x0002: exif.FocalLength,
+ 0x0003: Canon_0x0003,
+ 0x0004: Canon_ShotInfo,
+ 0x0005: Panorama,
+ 0x0006: ImageType,
+ 0x0007: FirmwareVersion,
+ 0x0008: FileNumber,
+ 0x0009: OwnerName,
+ 0x000c: SerialNumber,
+ 0x000d: CameraInfo,
+ 0x000f: CustomFunctions,
+ 0x0010: ModelID,
+ 0x0012: PictureInfo,
+ 0x0013: ThumbnailImageValidArea,
+ 0x0015: SerialNumberFormat,
+ 0x001a: SuperMacro,
+ 0x0026: Canon_AFInfo,
+ 0x0083: OriginalDecisionDataOffset,
+ 0x00a4: WhiteBalanceTable,
+ 0x0095: LensModel,
+ 0x0096: InternalSerialNumber,
+ 0x0097: DustRemovalData,
+ 0x0099: CustomFunctions,
+ 0x00a0: ProcessingInfo,
+ 0x00aa: MeasuredColor,
+ 0x00b4: exif.ColorSpace,
+ 0x00b5: Canon_0x00b5,
+ 0x00c0: Canon_0x00c0,
+ 0x00c1: Canon_0x00c1,
+ 0x00d0: VRDOffset,
+ 0x00e0: SensorInfo,
+ 0x4001: ColorData,
+}
+
+// Nikon version 3 Maker Notes fields (used by E5400, SQ, D2H, D70, and newer)
+var makerNoteNikon3Fields = map[uint16]exif.FieldName{
+ 0x0001: Nikon_Version,
+ 0x0002: ISOSpeed,
+ 0x0003: ColorMode,
+ 0x0004: Quality,
+ 0x0005: Nikon_WhiteBalance,
+ 0x0006: Sharpening,
+ 0x0007: Focus,
+ 0x0008: FlashSetting,
+ 0x0009: FlashDevice,
+ 0x000a: Nikon3_0x000a,
+ 0x000b: WhiteBalanceBias,
+ 0x000c: WB_RBLevels,
+ 0x000d: ProgramShift,
+ 0x000e: ExposureDiff,
+ 0x000f: ISOSelection,
+ 0x0010: DataDump,
+ 0x0011: Preview,
+ 0x0012: FlashComp,
+ 0x0013: ISOSettings,
+ 0x0016: ImageBoundary,
+ 0x0017: FlashExposureComp,
+ 0x0018: FlashBracketComp,
+ 0x0019: ExposureBracketComp,
+ 0x001a: ImageProcessing,
+ 0x001b: CropHiSpeed,
+ 0x001c: ExposureTuning,
+ 0x001d: SerialNumber,
+ 0x001e: Nikon_ColorSpace,
+ 0x001f: Nikon_VRInfo,
+ 0x0020: ImageAuthentication,
+ 0x0022: ActiveDLighting,
+ 0x0023: Nikon_PictureControl,
+ 0x0024: Nikon_WorldTime,
+ 0x0025: Nikon_ISOInfo,
+ 0x002a: VignetteControl,
+ 0x0080: ImageAdjustment,
+ 0x0081: ToneComp,
+ 0x0082: AuxiliaryLens,
+ 0x0083: LensType,
+ 0x0084: Lens,
+ 0x0085: FocusDistance,
+ 0x0086: DigitalZoom,
+ 0x0087: FlashMode,
+ 0x0088: Nikon_AFInfo,
+ 0x0089: ShootingMode,
+ 0x008a: AutoBracketRelease,
+ 0x008b: LensFStops,
+ 0x008c: ContrastCurve,
+ 0x008d: ColorHue,
+ 0x008f: SceneMode,
+ 0x0090: Nikon_LightSource,
+ 0x0091: Nikon_ShotInfo,
+ 0x0092: HueAdjustment,
+ 0x0093: NEFCompression,
+ 0x0094: Nikon_Saturation,
+ 0x0095: NoiseReduction,
+ 0x0096: LinearizationTable,
+ 0x0097: Nikon_ColorBalance,
+ 0x0098: Nikon_LensData,
+ 0x0099: RawImageCenter,
+ 0x009a: SensorPixelSize,
+ 0x009b: Nikon3_0x009b,
+ 0x009c: SceneAssist,
+ 0x009e: RetouchHistory,
+ 0x009f: Nikon3_0x009f,
+ 0x00a0: Nikon_SerialNO,
+ 0x00a2: ImageDataSize,
+ 0x00a3: Nikon3_0x00a3,
+ 0x00a5: ImageCount,
+ 0x00a6: DeletedImageCount,
+ 0x00a7: ShutterCount,
+ 0x00a8: Nikon_FlashInfo,
+ 0x00a9: ImageOptimization,
+ 0x00aa: SaturationText,
+ 0x00ab: VariProgram,
+ 0x00ac: ImageStabilization,
+ 0x00ad: AFResponse,
+ 0x00b0: Nikon_MultiExposure,
+ 0x00b1: HighISONoiseReduction,
+ 0x00b3: ToningEffect,
+ 0x00b7: Nikon_AFInfo2,
+ 0x00b8: Nikon_FileInfo,
+ 0x00b9: Nikon_AFTune,
+ 0x0e00: PrintIM,
+ 0x0e01: CaptureData,
+ 0x0e09: CaptureVersion,
+ 0x0e0e: CaptureOffsets,
+ 0x0e10: ScanIFD,
+ 0x0e1d: ICCProfile,
+ 0x0e1e: CaptureOutput,
+}
diff --git a/vendor/github.com/rwcarlsen/goexif/mknote/mknote.go b/vendor/github.com/rwcarlsen/goexif/mknote/mknote.go
new file mode 100644
index 000000000..1e6021621
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/mknote/mknote.go
@@ -0,0 +1,70 @@
+// Package mknote provides makernote parsers that can be used with goexif/exif.
+package mknote
+
+import (
+ "bytes"
+
+ "github.com/rwcarlsen/goexif/exif"
+ "github.com/rwcarlsen/goexif/tiff"
+)
+
+var (
+ // Canon is an exif.Parser for canon makernote data.
+ Canon = &canon{}
+ // NikonV3 is an exif.Parser for nikon makernote data.
+ NikonV3 = &nikonV3{}
+ // All is a list of all available makernote parsers
+ All = []exif.Parser{Canon, NikonV3}
+)
+
+type canon struct{}
+
+// Parse decodes all Canon makernote data found in x and adds it to x.
+func (_ *canon) Parse(x *exif.Exif) error {
+ m, err := x.Get(exif.MakerNote)
+ if err != nil {
+ return nil
+ }
+
+ mk, err := x.Get(exif.Make)
+ if err != nil {
+ return nil
+ }
+
+ if val, err := mk.StringVal(); err != nil || val != "Canon" {
+ return nil
+ }
+
+ // Canon notes are a single IFD directory with no header.
+ // Reader offsets need to be w.r.t. the original tiff structure.
+ buf := bytes.NewReader(append(make([]byte, m.ValOffset), m.Val...))
+ buf.Seek(int64(m.ValOffset), 0)
+
+ mkNotesDir, _, err := tiff.DecodeDir(buf, x.Tiff.Order)
+ if err != nil {
+ return err
+ }
+ x.LoadTags(mkNotesDir, makerNoteCanonFields, false)
+ return nil
+}
+
+type nikonV3 struct{}
+
+// Parse decodes all Nikon makernote data found in x and adds it to x.
+func (_ *nikonV3) Parse(x *exif.Exif) error {
+ m, err := x.Get(exif.MakerNote)
+ if err != nil {
+ return nil
+ } else if bytes.Compare(m.Val[:6], []byte("Nikon\000")) != 0 {
+ return nil
+ }
+
+ // Nikon v3 maker note is a self-contained IFD (offsets are relative
+ // to the start of the maker note)
+ mkNotes, err := tiff.Decode(bytes.NewReader(m.Val[10:]))
+ if err != nil {
+ return err
+ }
+ x.LoadTags(mkNotes.Dirs[0], makerNoteNikon3Fields, false)
+ return nil
+}
diff --git a/vendor/github.com/rwcarlsen/goexif/tiff/tiff_test.go b/vendor/github.com/rwcarlsen/goexif/tiff/tiff_test.go
new file mode 100644
index 000000000..5db348dc8
--- /dev/null
+++ b/vendor/github.com/rwcarlsen/goexif/tiff/tiff_test.go
@@ -0,0 +1,235 @@
+package tiff
+
+import (
+ "bytes"
+ "encoding/binary"
+ "encoding/hex"
+ "flag"
+ "os"
+ "path/filepath"
+ "testing"
+)
+
+var dataDir = flag.String("test_data_dir", ".", "Directory where the data files for testing are located")
+
+type input struct {
+ tgId string
+ tpe string
+ nVals string
+ offset string
+ val string
+}
+
+type output struct {
+ id uint16
+ typ DataType
+ count uint32
+ val []byte
+}
+
+type tagTest struct {
+ big input // big endian
+ little input // little endian
+ out output
+}
+
+///////////////////////////////////////////////
+//// Big endian Tests /////////////////////////
+///////////////////////////////////////////////
+var set1 = []tagTest{
+ //////////// string type //////////////
+ tagTest{
+ // {"TgId", "TYPE", "N-VALUES", "OFFSET--", "VAL..."},
+ input{"0003", "0002", "00000002", "11000000", ""},
+ input{"0300", "0200", "02000000", "11000000", ""},
+ output{0x0003, DataType(0x0002), 0x0002, []byte{0x11, 0x00}},
+ },
+ tagTest{
+ input{"0001", "0002", "00000006", "00000012", "111213141516"},
+ input{"0100", "0200", "06000000", "12000000", "111213141516"},
+ output{0x0001, DataType(0x0002), 0x0006, []byte{0x11, 0x12, 0x13, 0x14, 0x15, 0x16}},
+ },
+ //////////// int (1-byte) type ////////////////
+ tagTest{
+ input{"0001", "0001", "00000001", "11000000", ""},
+ input{"0100", "0100", "01000000", "11000000", ""},
+ output{0x0001, DataType(0x0001), 0x0001, []byte{0x11}},
+ },
+ tagTest{
+ input{"0001", "0001", "00000005", "00000010", "1112131415"},
+ input{"0100", "0100", "05000000", "10000000", "1112131415"},
+ output{0x0001, DataType(0x0001), 0x0005, []byte{0x11, 0x12, 0x13, 0x14, 0x15}},
+ },
+ tagTest{
+ input{"0001", "0006", "00000001", "11000000", ""},
+ input{"0100", "0600", "01000000", "11000000", ""},
+ output{0x0001, DataType(0x0006), 0x0001, []byte{0x11}},
+ },
+ tagTest{
+ input{"0001", "0006", "00000005", "00000010", "1112131415"},
+ input{"0100", "0600", "05000000", "10000000", "1112131415"},
+ output{0x0001, DataType(0x0006), 0x0005, []byte{0x11, 0x12, 0x13, 0x14, 0x15}},
+ },
+ //////////// int (2-byte) types ////////////////
+ tagTest{
+ input{"0001", "0003", "00000002", "11111212", ""},
+ input{"0100", "0300", "02000000", "11111212", ""},
+ output{0x0001, DataType(0x0003), 0x0002, []byte{0x11, 0x11, 0x12, 0x12}},
+ },
+ tagTest{
+ input{"0001", "0003", "00000003", "00000010", "111213141516"},
+ input{"0100", "0300", "03000000", "10000000", "111213141516"},
+ output{0x0001, DataType(0x0003), 0x0003, []byte{0x11, 0x12, 0x13, 0x14, 0x15, 0x16}},
+ },
+ tagTest{
+ input{"0001", "0008", "00000001", "11120000", ""},
+ input{"0100", "0800", "01000000", "11120000", ""},
+ output{0x0001, DataType(0x0008), 0x0001, []byte{0x11, 0x12}},
+ },
+ tagTest{
+ input{"0001", "0008", "00000003", "00000100", "111213141516"},
+ input{"0100", "0800", "03000000", "00100000", "111213141516"},
+ output{0x0001, DataType(0x0008), 0x0003, []byte{0x11, 0x12, 0x13, 0x14, 0x15, 0x16}},
+ },
+ //////////// int (4-byte) types ////////////////
+ tagTest{
+ input{"0001", "0004", "00000001", "11121314", ""},
+ input{"0100", "0400", "01000000", "11121314", ""},
+ output{0x0001, DataType(0x0004), 0x0001, []byte{0x11, 0x12, 0x13, 0x14}},
+ },
+ tagTest{
+ input{"0001", "0004", "00000002", "00000010", "1112131415161718"},
+ input{"0100", "0400", "02000000", "10000000", "1112131415161718"},
+ output{0x0001, DataType(0x0004), 0x0002, []byte{0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18}},
+ },
+ tagTest{
+ input{"0001", "0009", "00000001", "11121314", ""},
+ input{"0100", "0900", "01000000", "11121314", ""},
+ output{0x0001, DataType(0x0009), 0x0001, []byte{0x11, 0x12, 0x13, 0x14}},
+ },
+ tagTest{
+ input{"0001", "0009", "00000002", "00000011", "1112131415161819"},
+ input{"0100", "0900", "02000000", "11000000", "1112131415161819"},
+ output{0x0001, DataType(0x0009), 0x0002, []byte{0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x18, 0x19}},
+ },
+ //////////// rational types ////////////////////
+ tagTest{
+ input{"0001", "0005", "00000001", "00000010", "1112131415161718"},
+ input{"0100", "0500", "01000000", "10000000", "1112131415161718"},
+ output{0x0001, DataType(0x0005), 0x0001, []byte{0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18}},
+ },
+ tagTest{
+ input{"0001", "000A", "00000001", "00000011", "1112131415161819"},
+ input{"0100", "0A00", "01000000", "11000000", "1112131415161819"},
+ output{0x0001, DataType(0x000A), 0x0001, []byte{0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x18, 0x19}},
+ },
+ //////////// float types ///////////////////////
+ tagTest{
+ input{"0001", "0005", "00000001", "00000010", "1112131415161718"},
+ input{"0100", "0500", "01000000", "10000000", "1112131415161718"},
+ output{0x0001, DataType(0x0005), 0x0001, []byte{0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18}},
+ },
+ tagTest{
+ input{"0101", "000A", "00000001", "00000011", "1112131415161819"},
+ input{"0101", "0A00", "01000000", "11000000", "1112131415161819"},
+ output{0x0101, DataType(0x000A), 0x0001, []byte{0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x18, 0x19}},
+ },
+}
+
+func TestDecodeTag(t *testing.T) {
+ for i, tst := range set1 {
+ testSingle(t, binary.BigEndian, tst.big, tst.out, i)
+ testSingle(t, binary.LittleEndian, tst.little, tst.out, i)
+ }
+}
+
+func testSingle(t *testing.T, order binary.ByteOrder, in input, out output, i int) {
+ data := buildInput(in, order)
+ buf := bytes.NewReader(data)
+ tg, err := DecodeTag(buf, order)
+ if err != nil {
+ t.Errorf("(%v) tag %v%+v decode failed: %v", order, i, in, err)
+ return
+ }
+
+ if tg.Id != out.id {
+ t.Errorf("(%v) tag %v id decode: expected %v, got %v", order, i, out.id, tg.Id)
+ }
+ if tg.Type != out.typ {
+ t.Errorf("(%v) tag %v type decode: expected %v, got %v", order, i, out.typ, tg.Type)
+ }
+ if tg.Count != out.count {
+ t.Errorf("(%v) tag %v component count decode: expected %v, got %v", order, i, out.count, tg.Count)
+ }
+ if !bytes.Equal(tg.Val, out.val) {
+ t.Errorf("(%v) tag %v value decode: expected %v, got %v", order, i, out.val, tg.Val)
+ }
+}
+
+// buildInputBig creates a byte-slice based on big-endian ordered input
+func buildInput(in input, order binary.ByteOrder) []byte {
+ data := make([]byte, 0)
+ d, _ := hex.DecodeString(in.tgId)
+ data = append(data, d...)
+ d, _ = hex.DecodeString(in.tpe)
+ data = append(data, d...)
+ d, _ = hex.DecodeString(in.nVals)
+ data = append(data, d...)
+ d, _ = hex.DecodeString(in.offset)
+ data = append(data, d...)
+
+ if in.val != "" {
+ off := order.Uint32(d)
+ for i := 0; i < int(off)-12; i++ {
+ data = append(data, 0xFF)
+ }
+
+ d, _ = hex.DecodeString(in.val)
+ data = append(data, d...)
+ }
+
+ return data
+}
+
+func TestDecode(t *testing.T) {
+ name := filepath.Join(*dataDir, "sample1.tif")
+ f, err := os.Open(name)
+ if err != nil {
+ t.Fatalf("%v\n", err)
+ }
+
+ tif, err := Decode(f)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ t.Log(tif)
+}
+
+func TestDecodeTag_blob(t *testing.T) {
+ buf := bytes.NewReader(data())
+ buf.Seek(10, 1)
+ tg, err := DecodeTag(buf, binary.LittleEndian)
+ if err != nil {
+ t.Fatalf("tag decode failed: %v", err)
+ }
+
+ t.Logf("tag: %v+\n", tg)
+ n, d, err := tg.Rat2(0)
+ if err != nil {
+ t.Fatalf("tag decoded wrong type: %v", err)
+ }
+ t.Logf("tag rat val: %v/%v\n", n, d)
+}
+
+func data() []byte {
+ s1 := "49492A000800000002001A0105000100"
+ s1 += "00002600000069870400010000001102"
+ s1 += "0000000000004800000001000000"
+
+ dat, err := hex.DecodeString(s1)
+ if err != nil {
+ panic("invalid string fixture")
+ }
+ return dat
+}