mirror of https://github.com/dsoprea/go-exif.git
parent
c74ff0d0b0
commit
6303a275e5
Binary file not shown.
After Width: | Height: | Size: 46 KiB |
|
@ -28,6 +28,19 @@ var (
|
|||
|
||||
var (
|
||||
ValidGpsVersions = [][4]byte{
|
||||
// 2.0.0.0 appears to have a very similar format to 2.2.0.0, so enabling
|
||||
// it under that assumption.
|
||||
//
|
||||
// IFD-PATH=[IFD] ID=(0x8825) NAME=[GPSTag] COUNT=(1) TYPE=[LONG] VALUE=[114]
|
||||
// IFD-PATH=[IFD/GPSInfo] ID=(0x0000) NAME=[GPSVersionID] COUNT=(4) TYPE=[BYTE] VALUE=[02 00 00 00]
|
||||
// IFD-PATH=[IFD/GPSInfo] ID=(0x0001) NAME=[GPSLatitudeRef] COUNT=(2) TYPE=[ASCII] VALUE=[S]
|
||||
// IFD-PATH=[IFD/GPSInfo] ID=(0x0002) NAME=[GPSLatitude] COUNT=(3) TYPE=[RATIONAL] VALUE=[38/1...]
|
||||
// IFD-PATH=[IFD/GPSInfo] ID=(0x0003) NAME=[GPSLongitudeRef] COUNT=(2) TYPE=[ASCII] VALUE=[E]
|
||||
// IFD-PATH=[IFD/GPSInfo] ID=(0x0004) NAME=[GPSLongitude] COUNT=(3) TYPE=[RATIONAL] VALUE=[144/1...]
|
||||
// IFD-PATH=[IFD/GPSInfo] ID=(0x0012) NAME=[GPSMapDatum] COUNT=(7) TYPE=[ASCII] VALUE=[WGS-84]
|
||||
//
|
||||
{2, 0, 0, 0},
|
||||
|
||||
{2, 2, 0, 0},
|
||||
|
||||
// Suddenly appeared at the default in 2.31: https://home.jeita.or.jp/tsc/std-pdf/CP-3451D.pdf
|
||||
|
|
|
@ -269,6 +269,61 @@ func TestIfd_GpsInfo(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestIfd_GpsInfo__2_0_0_0(t *testing.T) {
|
||||
defer func() {
|
||||
if state := recover(); state != nil {
|
||||
err := log.Wrap(state.(error))
|
||||
log.PrintErrorf(err, "Test failure.")
|
||||
}
|
||||
}()
|
||||
|
||||
assetsPath := getTestAssetsPath()
|
||||
filepath := path.Join(assetsPath, "gps-2200-scaled.jpg")
|
||||
|
||||
rawExif, err := SearchFileAndExtractExif(filepath)
|
||||
log.PanicIf(err)
|
||||
|
||||
im := NewIfdMapping()
|
||||
|
||||
err = LoadStandardIfds(im)
|
||||
log.PanicIf(err)
|
||||
|
||||
ti := NewTagIndex()
|
||||
|
||||
_, index, err := Collect(im, ti, rawExif)
|
||||
log.PanicIf(err)
|
||||
|
||||
ifd, err := index.RootIfd.ChildWithIfdPath(exifcommon.IfdPathStandardGps)
|
||||
log.PanicIf(err)
|
||||
|
||||
gi, err := ifd.GpsInfo()
|
||||
log.PanicIf(err)
|
||||
|
||||
expectedLatitude := GpsDegrees{
|
||||
Orientation: 'S',
|
||||
Degrees: 38.0,
|
||||
Minutes: 24.311687,
|
||||
Seconds: 0.0,
|
||||
}
|
||||
|
||||
expectedLongitude := GpsDegrees{
|
||||
Orientation: 'E',
|
||||
Degrees: 144.0,
|
||||
Minutes: 11.33748,
|
||||
Seconds: 0.0,
|
||||
}
|
||||
|
||||
if GpsDegreesEquals(gi.Latitude, expectedLatitude) != true {
|
||||
t.Fatalf("Latitude not correct: %v", gi.Latitude)
|
||||
} else if GpsDegreesEquals(gi.Longitude, expectedLongitude) != true {
|
||||
t.Fatalf("Longitude not correct: %v", gi.Longitude)
|
||||
} else if gi.Altitude != 0 {
|
||||
t.Fatalf("Altitude not correct: (%d)", gi.Altitude)
|
||||
} else if gi.Timestamp.Unix() != -62135596800 {
|
||||
t.Fatalf("Timestamp not correct: (%d)", gi.Timestamp.Unix())
|
||||
}
|
||||
}
|
||||
|
||||
func TestIfd_EnumerateTagsRecursively(t *testing.T) {
|
||||
testImageFilepath := getTestImageFilepath()
|
||||
|
||||
|
|
Loading…
Reference in New Issue