383 Commits

Author SHA1 Message Date
Dustin Oprea
7f6eb3d9f3 utility.go: Add formatted values to ExifTag 2020-05-16 17:31:02 -04:00
Dustin Oprea
220964731d ifd_enumerate.go: Bugfix for ITEs not representing fully-qualified IFD paths
- This resulted in the lookup table having unique entries, and therefore
  no longer needing its values to be slices. We are going to fix this.
  It is not a backwards-compatible change, but this is a fairly internal
  internal functionality.

- Add simple accessors to determine if a thumbnail offset or size.
2020-05-16 17:18:57 -04:00
Dustin Oprea
efa6e2d6c0 ifd_builder_test.go: Fix test 2020-05-16 16:47:03 -04:00
Dustin Oprea
a45cc7cfd5 exif-read-tool/main.go: Example tool can now dump the thumbnail 2020-05-16 08:21:16 -04:00
Dustin Oprea
71e87d5e22 ifd_enumerate.go:
- Invalid tag-type sets the tag-ID so that we can include it in the log.
- Other logging enhancements.
  - Removed newline

- Incorporate the thumbnail into the furthest-offset counter.
- Thumbnail() no longer panics ErrNoThumbnail and just returns it.
  - This is a managed error, not a true panic condition.

- Collect() now builds index with FQ IFD paths, not non-FQ.
2020-05-16 08:21:12 -04:00
Dustin Oprea
70b6dc8a1a utility.go: Bugfix for non-FQ IFD-paths in GetFlatExifData 2020-05-16 07:54:40 -04:00
Dustin Oprea
42546383ce ifd_enumerate.go: Bugfix for slice error when processing thumbnails
We were not qualifying our thumbnail tag checks with the IFD that
thumbnails are supposed to live in, and were trying to parse the tags
that happen to share the same tag-IDs as thumbnails.

Fixes #dsoprea/go-jpeg-image-structure/issues/10
2020-05-16 07:32:13 -04:00
Dustin Oprea
5e5d4dcef0 ifd_builder_test.go: Fix inaccurate error message 2020-05-16 06:43:09 -04:00
Dustin Oprea
95ec440155 ifd_enumerate.go: Bugfix for scan() fully-qualified IFD paths not being fully-qualified 2020-05-16 06:42:42 -04:00
Dustin Oprea
86f0767752 ifd.go: Drop old commented IfdIdentity type 2020-05-16 06:38:39 -04:00
Dustin Oprea
f50c93b99c common: Rename exif.go to ifd.go 2020-05-16 05:24:33 -04:00
Dustin Oprea
9bcc8a45c4 Provide EXIF blob size estimates
We now keep track of the further offset that we have accessed (though
not necessarily the furthest offset of data that is unparseable by us).

It sometimes supports debugging efforts to have a ballpark idea of how
much EXIF data there is, rather than just "from the signature to the
end of the file" or however big the EXIF container is in the enclosing
image format. The latter can be buggy or ambiguous.
2020-05-16 03:19:52 -04:00
Dustin Oprea
416fd86ecd ifd_enumerate.go: Rename IfdTagEnumerator to byteParser
It's more accurate, and no longer exported.
2020-05-16 02:51:36 -04:00
Dustin Oprea
5fdad87477 exif-read-tool/main.go: Log size of EXIF blob
Remember that this is typically from the EXIF signature to the end of
the file.
2020-05-16 01:46:26 -04:00
Dustin Oprea
687250767b ifd_enumerate.go: Drop spurious struct field. Put hex prefix on offset in logging. 2020-05-16 01:45:36 -04:00
Dustin Oprea
3ed898edc8 exif.go: Log offset in SearchAndExtractExifWithReader() 2020-05-16 01:44:15 -04:00
Dustin Oprea
5c21ae7376 ifd_enumerate.go: Enrich unknown-type error with type number 2020-05-16 01:03:31 -04:00
Dustin Oprea
9ce7f5d058 ifd_enumerate.go: Fix log subject 2020-05-16 00:52:14 -04:00
Dustin Oprea
e7aea1340c ifd_enumerate.go: Tweak log message 2020-05-06 04:59:28 -04:00
Dustin Oprea
86feeb2b50 ifd_enumerate.go: Log and quietly stop parsing if IFD offset is invalid
Fixes #36
2020-05-06 04:56:05 -04:00
Dustin Oprea
8da3881353 Fix GPS 2.0.0.0 test image name 2020-05-06 01:47:03 -04:00
Dustin Oprea
357e25f102 .travis.yml: Drop older Go versions from CI
It causes us to queue for instances due to quota limits.
2020-05-06 01:42:23 -04:00
Dustin Oprea
6303a275e5 ifd_enumerate.go: Enable support for GPS 2.0.0.0
Fixes #35
2020-05-06 01:42:22 -04:00
Dustin Oprea
c74ff0d0b0 utility.go: Add GpsDegreesEquals 2020-05-06 01:32:01 -04:00
Dustin Oprea
b1ff77dba9 ifd_enumerate.go: Drop TODO 2020-05-05 19:51:12 -04:00
Dustin Oprea
b6593b4cec ifd_builder_test.go: Fix name of example 2020-05-05 11:09:19 -04:00
Dustin Oprea
bbd4b5fb6f ifd_builder_test.go: Add test and example for updating GPS info
- Added helper for getting GPS test-image.
2020-05-05 03:24:01 -04:00
Dustin Oprea
f67048a6e3 Rename package documentation file 2020-05-05 02:46:14 -04:00
Dustin Oprea
05e8551e57 Update package documentation to cite obsolescence 2020-05-05 02:45:22 -04:00
Dustin Oprea
36f5ad93e8 gps.go: Add Raw() method to GpsInfo to assisting with writing
- Moved some GPS logic from ifd_enumerate.go to gps.go .
- Added missing comments.
2020-05-05 02:28:56 -04:00
Dustin Oprea
f86f12408b exif.go: Update funky recover clauses 2020-05-05 02:27:31 -04:00
Dustin Oprea
4fc876786f exif.go: Brute-force EXIF searching is now buffered
- Added `SearchAndExtractExifWithReader()`.
- `SearchFileAndExtractExif()` now calls `SearchAndExtractExifWithReader()`
  instead of reading the whole image first.

Fixes #34

Relates to optimizations in df264b3 as well.
2020-05-05 01:27:20 -04:00
Dustin Oprea
df264b321a exif.go: Use simple byte comparison to match signature 2020-05-05 00:58:01 -04:00
Dustin Oprea
3e77768f35 README.md: Further qualify attribution list 2020-05-03 02:22:16 -04:00
Dustin Oprea
cc316fb440 ifd_enumerate.go: (*Ifd).PrintTagTree() no longer fails on parseable undefined values
https://github.com/dsoprea/go-exif/issues/33
2020-05-02 17:11:50 -04:00
Dustin Oprea
6aea10b45f exif-read-tool: Skip unparseable undefined tags
We've encountered a malformed user-comments value in an image from a
Canon EOS 5D Mark II.

2020/05/02 16:28:58 exifjpeg.ifd: [DEBUG]  Parsing IFD [IFD/Exif] (0) at offset (0102).
2020/05/02 16:28:58 exifjpeg.ifd: [DEBUG]  Current IFD tag-count: (33)
2020/05/02 16:28:58 main.main: [WARNING]  Skipping unparseable undefined tag: [IFD/Exif] (9286)
2020/05/02 16:28:58 exifjpeg.ifd: [DEBUG]  Descending to IFD [IFD/Exif/Iop].
2020/05/02 16:28:58 exifjpeg.ifd: [DEBUG]  Parsing IFD [IFD/Exif/Iop] (0) at offset (a164).

Fixes #33
2020-05-02 16:33:40 -04:00
Dustin Oprea
76619923f4 exif-read-tool: Fix verbosity. Replace prints with logging.
It's just an example tool, but still.
2020-05-02 16:25:36 -04:00
Dustin Oprea
80e3b12b98 undefined/exif_9286_user_comment.go: Validate for minimum user-notes size 2020-05-02 16:24:00 -04:00
Dustin Oprea
45986dbda3 Now a specific error for unparseable undefined tags 2020-05-02 16:23:19 -04:00
Dustin Oprea
73303ea590 go.mod: Bump version of go-logging 2020-05-02 16:21:52 -04:00
Dustin Oprea
640175a69f exif-read-tool: Skip unsupported undefined tags 2020-03-21 18:53:14 -04:00
Dustin Oprea
1e1e1ed104 exif-read-tool: Make no-exif error nicer for tool 2020-03-21 18:52:41 -04:00
Dustin Oprea
bd04addaf4 v2/common/parser.go: Revert to previous NUL forgiveness
It turns out that there is so much loose handling with the terminating
NUL characters out there that there's a societal breakdown without this.

Fixes #31
2020-01-26 00:26:15 -05:00
Dustin Oprea
bc34ca087b exif-read-tool/main_test.go: Bugfix for missing error check 2020-01-25 23:30:30 -05:00
Dustin Oprea
0bbb7a3584 ifd_enumerate.go: Revert to using a simple function for the visitor 2020-01-13 18:12:07 -05:00
Dustin Oprea
90b66e3d11 Renamed V2 constant
From ErrUnhandledUnknownTypedTag to ErrUnhandledUndefinedTypedTag. The
release just happened. There should be minimal fallout.
2020-01-13 13:44:00 -05:00
Dustin Oprea
b7b73dfdaf Yanked go-exif from our own dependencies
Not sure how that got there.
2020-01-13 12:04:04 -05:00
Dustin Oprea
eee9ff13c7 Removed init()'s from tests so they don't run when imported
Otherwise they'll break for other projects' tests. We now initialize our
paths on-demand, which will only happen when running from our own tests.
2020-01-13 12:00:23 -05:00
Dustin Oprea
0d58b5da07 README.md: Update for v2 2020-01-12 18:56:35 -05:00
Dustin Oprea
106cad7062 Add tests for remaining undefined types
- Also fixed a typeo in several recopied error messages.
2020-01-12 18:56:35 -05:00