diff options
Diffstat (limited to 'vendor/github.com/dsoprea/go-exif/README.md')
-rw-r--r-- | vendor/github.com/dsoprea/go-exif/README.md | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/vendor/github.com/dsoprea/go-exif/README.md b/vendor/github.com/dsoprea/go-exif/README.md deleted file mode 100644 index 972d58493..000000000 --- a/vendor/github.com/dsoprea/go-exif/README.md +++ /dev/null @@ -1,206 +0,0 @@ -[](https://travis-ci.org/dsoprea/go-exif) -[](https://codecov.io/gh/dsoprea/go-exif) -[](https://goreportcard.com/report/github.com/dsoprea/go-exif/v3) -[](https://godoc.org/github.com/dsoprea/go-exif/v3) - -# Overview - -This package provides native Go functionality to parse an existing EXIF block, update an existing EXIF block, or add a new EXIF block. - - -# Getting - -To get the project and dependencies: - -``` -$ go get -t github.com/dsoprea/go-exif/v3 -``` - - -# Scope - -This project is concerned only with parsing and encoding raw EXIF data. It does -not understand specific file-formats. This package assumes you know how to -extract the raw EXIF data from a file, such as a JPEG, and, if you want to -update it, know how to write it back. File-specific formats are not the concern -of *go-exif*, though we provide -[exif.SearchAndExtractExif][search-and-extract-exif] and -[exif.SearchFileAndExtractExif][search-file-and-extract-exif] as brute-force -search mechanisms that will help you explore the EXIF information for newer -formats that you might not yet have any way to parse. - -That said, the author also provides the following projects to support the -efficient processing of the corresponding image formats: - -- [go-jpeg-image-structure](https://github.com/dsoprea/go-jpeg-image-structure) -- [go-png-image-structure](https://github.com/dsoprea/go-png-image-structure) -- [go-tiff-image-structure](https://github.com/dsoprea/go-tiff-image-structure) -- [go-heic-exif-extractor](https://github.com/dsoprea/go-heic-exif-extractor) - -See the [SetExif example in go-jpeg-image-structure][jpeg-set-exif] for -practical information on getting started with JPEG files. - - -# Usage - -The package provides a set of [working examples][examples] and is covered by -unit-tests. Please look to these for getting familiar with how to read and write -EXIF. - -Create an instance of the `Exif` type and call `Scan()` with a byte-slice, where -the first byte is the beginning of the raw EXIF data. You may pass a callback -that will be invoked for every tag or `nil` if you do not want one. If no -callback is given, you are effectively just validating the structure or parsing -of the image. - -Obviously, it is most efficient to properly parse the media file and then -provide the specific EXIF data to be parsed, but there is also a heuristic for -finding the EXIF data within the media blob, directly. This means that, at least -for testing or curiosity, **you do not have to parse or even understand the -format of image or audio file in order to find and decode the EXIF information -inside of it.** See the usage of the `SearchAndExtractExif` method in the -example. - -The library often refers to an IFD with an "IFD path" (e.g. IFD/Exif, -IFD/GPSInfo). A "fully-qualified" IFD-path is one that includes an index -describing which specific sibling IFD is being referred to if not the first one -(e.g. IFD1, the IFD where the thumbnail is expressed per the TIFF standard). - -There is an "IFD mapping" and a "tag index" that must be created and passed to -the library from the top. These contain all of the knowledge of the IFD -hierarchies and their tag-IDs (the IFD mapping) and the tags that they are -allowed to host (the tag index). There are convenience functions to load them -with the standard TIFF information, but you, alternatively, may choose -something totally different (to support parsing any kind of EXIF data that does -not follow or is not relevant to TIFF at all). - - -# Standards and Customization - -This project is configuration driven. By default, it has no knowledge of tags -and IDs until you load them prior to using (which is incorporated in the -examples). You are just as easily able to add additional custom IFDs and custom -tags for them. If desired, you could completely ignore the standard information -and load *totally* non-standard IFDs and tags. - -This would be useful for divergent implementations that add non-standard -information to images. It would also be useful if there is some need to just -store a flat list of tags in an image for simplified, proprietary usage. - - -# Reader Tool - -There is a runnable reading/dumping tool included: - -``` -$ go get github.com/dsoprea/go-exif/v3/command/exif-read-tool -$ exif-read-tool --filepath "<media file-path>" -``` - -Example output: - -``` -IFD-PATH=[IFD] ID=(0x010f) NAME=[Make] COUNT=(6) TYPE=[ASCII] VALUE=[Canon] -IFD-PATH=[IFD] ID=(0x0110) NAME=[Model] COUNT=(22) TYPE=[ASCII] VALUE=[Canon EOS 5D Mark III] -IFD-PATH=[IFD] ID=(0x0112) NAME=[Orientation] COUNT=(1) TYPE=[SHORT] VALUE=[1] -IFD-PATH=[IFD] ID=(0x011a) NAME=[XResolution] COUNT=(1) TYPE=[RATIONAL] VALUE=[72/1] -IFD-PATH=[IFD] ID=(0x011b) NAME=[YResolution] COUNT=(1) TYPE=[RATIONAL] VALUE=[72/1] -IFD-PATH=[IFD] ID=(0x0128) NAME=[ResolutionUnit] COUNT=(1) TYPE=[SHORT] VALUE=[2] -IFD-PATH=[IFD] ID=(0x0132) NAME=[DateTime] COUNT=(20) TYPE=[ASCII] VALUE=[2017:12:02 08:18:50] -... -``` - -You can also print the raw, parsed data as JSON: - -``` -$ exif-read-tool --filepath "<media file-path>" -json -``` - -Example output: - -``` -[ - { - "ifd_path": "IFD", - "fq_ifd_path": "IFD", - "ifd_index": 0, - "tag_id": 271, - "tag_name": "Make", - "tag_type_id": 2, - "tag_type_name": "ASCII", - "unit_count": 6, - "value": "Canon", - "value_string": "Canon" - }, - { - "ifd_path": "IFD", -... -``` - - -# Testing - -The traditional method: - -``` -$ go test github.com/dsoprea/go-exif/v3/... -``` - - -# Release Notes - -## v3 Release - -This release primarily introduces an interchangeable data-layer, where any -`io.ReadSeeker` can be used to read EXIF data rather than necessarily loading -the EXIF blob into memory first. - -Several backwards-incompatible clean-ups were also included in this release. See -[releases][releases] for more information. - -## v2 Release - -Features a heavily reflowed interface that makes usage much simpler. The -undefined-type tag-processing (which affects most photographic images) has also -been overhauled and streamlined. It is now complete and stable. Adoption is -strongly encouraged. - - -# *Contributing* - -EXIF has an excellently-documented structure but there are a lot of devices and -manufacturers out there. There are only so many files that we can personally -find to test against, and most of these are images that have been generated only -in the past few years. JPEG, being the largest implementor of EXIF, has been -around for even longer (but not much). Therefore, there is a lot of -compatibility to test for. - -**If you are able to help by running the included reader-tool against all of the -EXIF-compatible files you have, it would be deeply appreciated. This is mostly -going to be JPEG files (but not all variations). If you are able to test a large -number of files (thousands or millions) then please post an issue mentioning how -many files you have processed. If you had failures, then please share them and -try to support efforts to understand them.** - -If you are able to test 100K+ files, I will give you credit on the project. The -further back in time your images reach, the higher in the list your name/company -will go. - - -# Contributors/Testing - -Thank you to the following users for solving non-trivial issues, supporting the -project with solving edge-case problems in specific images, or otherwise -providing their non-trivial time or image corpus to test go-exif: - -- [philip-firstorder](https://github.com/philip-firstorder) (200K images) -- [matchstick](https://github.com/matchstick) (102K images) - -In addition to these, it has been tested on my own collection, north of 478K -images. - -[search-and-extract-exif]: https://godoc.org/github.com/dsoprea/go-exif/v3#SearchAndExtractExif -[search-file-and-extract-exif]: https://godoc.org/github.com/dsoprea/go-exif/v3#SearchFileAndExtractExif -[jpeg-set-exif]: https://godoc.org/github.com/dsoprea/go-jpeg-image-structure#example-SegmentList-SetExif -[examples]: https://godoc.org/github.com/dsoprea/go-exif/v3#pkg-examples -[releases]: https://github.com/dsoprea/go-exif/releases |