Commit Graph

383 Commits (ae8670ab64fc34b0a7a418f15fe45a84d260146c)

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