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 (w *regresswalk) Walk(name exif.FieldName, tag *tiff.Tag) error { if strings.HasPrefix(string(name), exif.UnknownPrefix) { fmt.Fprintf(w.wr, "\"%v\": `%v`,\n", name, tag.String()) } else { fmt.Fprintf(w.wr, "%v: `%v`,\n", name, tag.String()) } return nil }
func parse3Rat2(tag *tiff.Tag) ([3]float64, error) { v := [3]float64{} for i := range v { num, den, err := tag.Rat2(i) if err != nil { return v, err } v[i] = ratFloat(num, den) if tag.Count < uint32(i+2) { break } } return v, nil }
func tagDegrees(tag *tiff.Tag) (float64, error) { switch tag.Format() { case tiff.RatVal: // The usual case, according to the Exif spec // (http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf, // sec 4.6.6, p. 52 et seq.) v, err := parse3Rat2(tag) if err != nil { return 0.0, err } return v[0] + v[1]/60 + v[2]/3600.0, nil case tiff.StringVal: // Encountered this weird case with a panorama picture taken with a HTC phone s, err := tag.StringVal() if err != nil { return 0.0, err } return parseTagDegreesString(s) default: // don't know how to parse value, give up return 0.0, fmt.Errorf("Malformed EXIF Tag Degrees") } }
func (_ Walker) Walk(name exif.FieldName, tag *tiff.Tag) error { data, _ := tag.MarshalJSON() fmt.Printf(" %v: %v\n", name, string(data)) return nil }