func ParseField(br tiff.BReader, tsp tiff.TagSpace, ftsp tiff.FieldTypeSpace) (out tiff.Field, err error) { if ftsp == nil { ftsp = tiff.DefaultFieldTypeSpace } if tsp == nil { tsp = tiff.DefaultTagSpace } f := &field{ftsp: ftsp, tsp: tsp} if f.entry, err = ParseEntry(br); err != nil { return } fv := &fieldValue{order: br.ByteOrder()} valSize := int64(f.Count()) * int64(f.Type().Size()) valOffBytes := f.entry.ValueOffset() if valSize > 8 { fv.value = make([]byte, valSize) offset := int64(br.ByteOrder().Uint64(valOffBytes[:])) // Hope this does not go negative if err = br.BReadSection(&fv.value, offset, valSize); err != nil { return } } else { fv.value = valOffBytes[:] } f.value = fv return f, nil }