|
Packit |
01d647 |
![Exiv2](exiv2.png)
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
# Exiv2 Sample Applications
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Exiv2 is a C++ library and a command line utility to read, write, delete and modify Exif, IPTC, XMP and ICC image metadata. Exiv2 also features a collection of sample and test command-line programs. Please be aware that while the program _**exiv2**_ enjoys full support from Team Exiv2, the other programs have been written for test, documentation or development purposes. You are expected to read the code to discover the specification of programs other than _**exiv2**_.
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
### Sample Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
| Name | Purpose | More information | Code |
|
|
Packit |
01d647 |
|:--- |:--- |:--- |:-- |
|
|
Packit |
01d647 |
| _**addmoddel**_ | Demonstrates Exiv2 library APIs to add, modify or delete metadata | [addmoddel](#addmoddel) | [addmoddel.cpp](samples/addmoddel.cpp) |
|
|
Packit |
01d647 |
| _**exifcomment**_ | Set Exif.Photo.UserComment in an image | [exifcomment](#exifcomment) | [exifcomment.cpp](samples/exifcomment.cpp) |
|
|
Packit |
01d647 |
| _**exifdata**_ | Prints _**Exif**_ metadata in different formats in an image | [exifdata](#exifdata) | [exifdata.cpp](samples/exifdata.cpp) |
|
|
Packit |
01d647 |
| _**exifprint**_ | Print _**Exif**_ metadata in images Miscelleous other features | [exifprint](#exifprint)| [exifprint.cpp](samples/exifprint.cpp) |
|
|
Packit |
01d647 |
| _**exifvalue**_ | Prints the value of a single _**Exif**_ tag in a file | [exifvalue](#exifvalue) | [exifvalue.cpp](samples/exifvalue.cpp) |
|
|
Packit |
01d647 |
| _**exiv2**_ | Command line utility to read, write, delete and modify Exif, IPTC, XMP and ICC image metadata. This is the primary test tool used by Team Exiv2 and can exercise almost all code in the library. Due to the extensive capability of this utility, the APIs used are usually less obvious for casual code inspection. | [https://exiv2.org/manpage.html](https://exiv2.org/manpage.html) [https://exiv2.org/sample.html](https://exiv2.org/sample.html) | |
|
|
Packit |
01d647 |
| _**exiv2json**_ | Extracts data from image in JSON format. This program also contains a parser to recursively parse Xmp metadata into vectors and objects. | [exiv2json](#exiv2json) | [exiv2json.cpp](samples/exiv2json.cpp) |
|
|
Packit |
01d647 |
| _**geotag**_ | Reads GPX data and updates images with GPS Tags | [geotag](#geotag) | [geotag.cpp](samples/geotag.cpp) |
|
|
Packit |
01d647 |
| _**iptceasy**_ | Demonstrates read, set or modify IPTC metadata | [iptceasy](#iptceasy) | [iptceasy.cpp](samples/iptceasy.cpp) |
|
|
Packit |
01d647 |
| _**iptcprint**_ | Demonstrates Exiv2 library APIs to print Iptc data | [iptceasy](#iptceasy) | [iptcprint.cpp](samples/iptcprint.cpp) |
|
|
Packit |
01d647 |
| _**metacopy**_ | Demonstrates copying metadata from one image to another | [metacopy](#metacopy) | [metacopy.cpp](samples/metacopy.cpp) |
|
|
Packit |
01d647 |
| _**mrwthumb**_ | Sample program to extract a Minolta thumbnail from the makernote | [mrwthumb](#mrwthumb) | [mrwthumb.cpp](samples/mrwthumb.cpp) |
|
|
Packit |
01d647 |
| _**xmpparse**_ | Read an XMP packet from a file, parse it and print all (known) properties. | [xmpparse](#xmpparse) | [xmpparse.cpp](samples/xmpparse.cpp) |
|
|
Packit |
01d647 |
| _**xmpprint**_ | Read an XMP from a file, parse it and print all (known) properties.. | [xmpprint](#xmpprint) | [xmpprint.cpp](samples/xmpprint.cpp) |
|
|
Packit |
01d647 |
| _**xmpsample**_ | Demonstrates Exiv2 library high level XMP classes | [xmpsample](#xmpsample) | [xmpsample.cpp](samples/exmpsample.cpp) |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
### Test Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
As Exiv2 is open source, we publish all our materials. Some of the following programs are actively used in our test harness. Some of the following programs were written during the development of features and their on-going use may be limited, or even obsolete. In general these programs are published as source and Team Exiv2 will not provide support to users.
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
| Name | Kind | More information |
|
|
Packit |
01d647 |
|:--- |:--- |:--- |
|
|
Packit |
01d647 |
| _**conntest**_ | Test http/https/ftp/ssh/sftp connection | [conntest](#conntest) |
|
|
Packit |
01d647 |
| _**convert-test**_ | Conversion test driver | [convert-test](#convert-test) |
|
|
Packit |
01d647 |
| _**easyaccess-test**_ | Sample program using high-level metadata access functions | [easyaccess-test](#easyaccess-test) |
|
|
Packit |
01d647 |
| _**getopt-test**_ | Sample program to test getopt() | [getopt-test](#getopt-test) |
|
|
Packit |
01d647 |
| _**ini-test**_ | Shows simple usage of the INIReader class | [ini-test](#ini-test) |
|
|
Packit |
01d647 |
| _**iotest**_ | Test programs for BasicIo functions. | [iotest](#iotest) |
|
|
Packit |
01d647 |
| _**iptctest**_ | Sample program test Iptc reading and writing. | [iptctest](#iptctest) |
|
|
Packit |
01d647 |
| _**key-test**_ | Key unit tests | [key-test](#key-test) |
|
|
Packit |
01d647 |
| _**largeiptc-test**_ | Test for large (>65535 bytes) IPTC buffer | [largeiptc-test](#largeiptc-test) |
|
|
Packit |
01d647 |
| _**mmap-test**_ | Simple mmap tests | [mmap-test](#mmap-test) |
|
|
Packit |
01d647 |
| _**path-test**_ | Test path IO | [path-test](#path-test) |
|
|
Packit |
01d647 |
| _**prevtest**_ | Test access to preview images | [prevtest](#prevtest) |
|
|
Packit |
01d647 |
| _**remotetest**_ | Tester application for testing remote i/o. | [remotetest](#remotetest) |
|
|
Packit |
01d647 |
| _**stringto-test**_ | Test conversions from string to long, float and Rational types. | [stringto-test](#stringto-test) |
|
|
Packit |
01d647 |
| _**taglist**_ | Print a simple comma separated list of tags defined in Exiv2 | [taglist](#taglist) |
|
|
Packit |
01d647 |
| _**tiff-test**_ | Simple TIFF write test | [tiff-test](#tiff-test) |
|
|
Packit |
01d647 |
| _**werror-test**_ | Simple tests for the wide-string error class WError | [werror-test](#werror-test) |
|
|
Packit |
01d647 |
| _**write-test**_ | ExifData write unit tests | [write-test](#write-test) |
|
|
Packit |
01d647 |
| _**write2-test**_ | ExifData write unit tests for Exif data created from scratch | [write2-test](#write2-test) |
|
|
Packit |
01d647 |
| _**xmpdump**_ | Sample program to dump the XMP packet of an image | [xmpdump](#xmpdump) |
|
|
Packit |
01d647 |
| _**xmpparser-test**_ | Read an XMP packet from a file, parse and re-serialize it. | [xmpparser-test](#xmpparser-test) |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
## 2 Sample Program Descriptions
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### addmoddel
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: addmoddel file
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Demonstrates Exiv2 library APIs to add, modify or delete metadata. _Code: [addmoddel.cpp](samples/addmoddel.cpp)_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### exifcomment
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: exifcomment file
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
This is a simple program that demonstrates how to set _**Exif.Photo.UserComment**_ in an image. _Code: [exifcomment.cpp](samples/exifcomment.cpp)_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
### exifdata
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: exifdata file format
|
|
Packit |
01d647 |
formats: csv | json | wolf | xml
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
This is a simple program to demonstrate dumping _**Exif**_ metadata in common formats. _Code: [exifdata.cpp](samples/exifdata.cpp)_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### exifprint
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: exifprint [ file | --version | --version-test ]
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
| Arguments | Description |
|
|
Packit |
01d647 |
|:-- |:--- |
|
|
Packit |
01d647 |
| file | Path to image |
|
|
Packit |
01d647 |
| --version | Print version information from build |
|
|
Packit |
01d647 |
| --version-test | Tests Exiv2 VERSION API |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
This program demonstrates how to print _**Exif**_ metadata in an image. This program is also discussed in the platform ReadMe.txt file included in a build bundle. The option **--version** was added enable the user to build a test application which dumps the build information. The option **--version-test** was added to test the macro EXIV2\_TEST\_VERSION() in **include/exiv2/version.hpp**.
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
There is one other unique feature of this program. It is the only test/sample program which can use the EXV\_UNICODE\_PATH build feature of Exiv2 on Windows.
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
_Code: [exifprint.cpp](samples/exifprint.cpp)_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### exifvalue
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: exifvalue file tag
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Prints the value of a single _**Exif**_ tag in a file. _Code: [exifvalue.cpp](samples/exifvalue.cpp)_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### exiv2json
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: exiv2json [-option] file
|
|
Packit |
01d647 |
Option: all | exif | iptc | xmp | filesystem
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
| Arguments | Description |
|
|
Packit |
01d647 |
|:-- |:--- |
|
|
Packit |
01d647 |
| all | All metadata |
|
|
Packit |
01d647 |
| filesystem | Filesystem metadata |
|
|
Packit |
01d647 |
| exif | Exif metadata |
|
|
Packit |
01d647 |
| iptc | Iptc metadata |
|
|
Packit |
01d647 |
| xmp | Xmp metadata |
|
|
Packit |
01d647 |
| file | path to image |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
This program dumps metadata from an image in JSON format. _Code: [exiv2json.cpp](samples/exiv2json.cpp)_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
exiv2json has a recursive parser to encode XMP into Vectors and Objects. XMP data is XMP and can contain XMP `Bag` and `Seq` which are converted to JSON Objects and Arrays. Exiv2 presents data in the format: Family.Group.Tag. For XMP, results in "flat" output such such as:
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
$ exiv2 -px ~/Stonehenge.jpg
|
|
Packit |
01d647 |
Xmp.xmp.Rating XmpText 1 0
|
|
Packit |
01d647 |
Xmp.xmp.ModifyDate XmpText 25 2015-07-16T20:25:28+01:00
|
|
Packit |
01d647 |
Xmp.dc.description LangAlt 1 lang="x-default" Classic View
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
exiv2json parses the Exiv2 'Family.Group.Tag' data and restores the structure of the original data in JSON. _Code: [exiv2json.cpp](samples/exiv2json.cpp)_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
$ exiv2json -xmp http://clanmills.com/Stonehenge.jpg
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
"Xmp": {
|
|
Packit |
01d647 |
"xmp": {
|
|
Packit |
01d647 |
"Rating": "0",
|
|
Packit |
01d647 |
"ModifyDate": "2015-07-16T20:25:28+01:00"
|
|
Packit |
01d647 |
},
|
|
Packit |
01d647 |
"dc": {
|
|
Packit |
01d647 |
"description": {
|
|
Packit |
01d647 |
"lang": {
|
|
Packit |
01d647 |
"x-default": "Classic View"
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
},
|
|
Packit |
01d647 |
"xmlns": {
|
|
Packit |
01d647 |
"dc": "http:\/\/purl.org\/dc\/elements\/1.1\/",
|
|
Packit |
01d647 |
"xmp": "http:\/\/ns.adobe.com\/xap\/1.0\/"
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
$
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### geotag
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: geotag {-help|-version|-dst|-dryrun|-ascii|-verbose|-adjust value|-tz value|-delta value}+ path+
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Geotag reads one or more GPX files and adds GPS Tages to images. _Code: [geotag.cpp](samples/geotag.cpp)_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
If the path is a directory, geotag will read all the files in the directory. It constructs a time dictionary of position data, then updates every image with GPS Tags.
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
| Arguments | Description |
|
|
Packit |
01d647 |
|:-- |:--- |
|
|
Packit |
01d647 |
| -ascii | Output in ascii (not UTF8). Prints `deg` instead of °. |
|
|
Packit |
01d647 |
| -dst | Apply 1 hour adjustment for daylight saving time. |
|
|
Packit |
01d647 |
| -dryrun | Read arguments and print report. Does not modify images. |
|
|
Packit |
01d647 |
| -verbose | Report progress. |
|
|
Packit |
01d647 |
| -adjust value | Add/subtract time from image data. |
|
|
Packit |
01d647 |
| -tz value | Specify time zone. For example PST = -8:00 |
|
|
Packit |
01d647 |
| -delta value | Correction between Image DataTime and GPS time. |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
I use this program frequently. I have a little Canon camera which I take when I run. My Samsung Galaxy Watch uploads my runs to Strava and I download the GPX. If I'm in another time-zone and have forgotten to change the time setting in the camera, I use `-adjust` to alter the images. The GPX time is always correct, however the camera is normally off by seconds or minutes. This option enables you to correct for inaccuracy in the setting of the camera time.
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### iptceasy
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: iptceasy file
|
|
Packit |
01d647 |
Reads and writes raw metadata. Use -h option for help.
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Demonstrates read, set or modify IPTC metadata. _Code: [iptceasy.cpp](samples/iptceasy.cpp)_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### iptcprint
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: iptcprint file
|
|
Packit |
01d647 |
Reads and writes raw metadata. Use -h option for help.
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Demonstrates Exiv2 library APIs to print Iptc data. _Code: [iptcprint.cpp](samples/iptcprint.cpp)_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### metacopy
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: metacopy [-iecaph] readfile writefile
|
|
Packit |
01d647 |
Reads and writes raw metadata. Use -h option for help.
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Metacopy is used to copy a complete metadata block from one file to another. _Code: [metacopy.cpp](samples/metacopy.cpp)_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Please note that some metadata such as Exif.Photo.PixelXDimension is considered to be part of the image and will not be copied.
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### mrwthumb
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: mrwthumb file
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Sample program to extract a Minolta thumbnail from the makernote. _Code: [mrwthumb.cpp](samples/mrwthumb.cpp)_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### xmpparse
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: xmpparse file
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Read an XMP packet from a file, parse it and print all (known) properties. _Code: [xmpparse.cpp](samples/xmpparse.cpp)_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### xmpprint
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: xmpprint file
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Read an XMP from a file, parse it and print all (known) properties. _Code: [xmpprint.cpp](samples/xmpprint.cpp)_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### xmpsample
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: xmpsample file
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Demonstrates Exiv2 library high level XMP classes. _Code: [xmpsample.cpp](samples/xmpsample.cpp)_
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
## 3 Test Program Descriptions
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### conntest
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: conntest url {-http1_0}
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Test http/https/ftp/ssh/sftp connection
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### convert-test
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: convert-test file
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Conversion test driver
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### easyaccess-test
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: easyaccess-test file
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Sample program using high-level metadata access functions
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### getopt-test
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: getopt-test
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
This program is used to test the function **getopt()**. Prior to Exiv2 v0.27, the sample programs used the platform's C Runtime Library function **getopt()**. Visual Studio builds used code in src/getopt.cpp. Due to differences in the platform **getopt()**, the code in src/getopt.cpp was modified and adopted on every platforms. This test program was added for test and debug purpose. Please note that src/getopt.cpp is compiled and linked into the sample application and is not part of the Exiv2 library.
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### ini-test
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: ini-test
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
This program is used to test reading the file ini-test. This program was added in Exiv2 v0.26 when the ~/.exiv2 file was added to the Exiv2 architecture.
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### iotest
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: iotest filein fileout1 fileout2
|
|
Packit |
01d647 |
fileouts are overwritten and should match filein exactly
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Test programs for BasicIo functions.
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### iptctest
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: iptctest image
|
|
Packit |
01d647 |
Commands read from stdin.
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Sample program test Iptc reading and writing.
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### key-test
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: key-test
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Key unit tests
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### largeiptc-test
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: largeiptc-test image datafile
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Test for large (>65535 bytes) IPTC buffer
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### mmap-test
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: mmap-test file
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Simple mmap tests
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### path-test
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: path-test file
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Test path IO
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### prevtest
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: prevtest file
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Test access to preview images
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### remotetest
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: remotetest remotetest file {--nocurl | --curl}
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Tester application for testing remote i/o.
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### stringto-test
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: stringto-test
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Test conversions from string to long, float and Rational types.
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### taglist
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: taglist [--group name|Groups|Exif|Canon|CanonCs|CanonSi|CanonCf|Fujifilm|Minolta|Nikon1|Nikon2|Nikon3|Olympus|Panasonic|Pentax|Sigma|Sony|Iptc|dc|xmp|xmpRights|xmpMM|xmpBJ|xmpTPg|xmpDM|pdf|photoshop|crs|tiff|exif|aux|iptc]
|
|
Packit |
01d647 |
Print Exif tags, MakerNote tags, or Iptc datasets
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Print a simple comma separated list of tags defined in Exiv2
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
This program encodes the library's tag definitions in ascii.
|
|
Packit |
01d647 |
The data from this program is formatted as HTML on the web-site. https://exiv2.org/metadata.html
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
For example, to show the binary definition of Group `Nikon3`:
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
1516 rmills@rmillsmbp:~/gnu/github/exiv2/0.27-maintenance $ taglist Nikon3
|
|
Packit |
01d647 |
Version, 1, 0x0001, Nikon3, Exif.Nikon3.Version, Undefined, Nikon Makernote version
|
|
Packit |
01d647 |
ISOSpeed, 2, 0x0002, Nikon3, Exif.Nikon3.ISOSpeed, Short, ISO speed setting
|
|
Packit |
01d647 |
ColorMode, 3, 0x0003, Nikon3, Exif.Nikon3.ColorMode, Ascii, Color mode
|
|
Packit |
01d647 |
Quality, 4, 0x0004, Nikon3, Exif.Nikon3.Quality, Ascii, Image quality setting
|
|
Packit |
01d647 |
WhiteBalance, 5, 0x0005, Nikon3, Exif.Nikon3.WhiteBalance, Ascii, White balance
|
|
Packit |
01d647 |
Sharpening, 6, 0x0006, Nikon3, Exif.Nikon3.Sharpening, Ascii, Image sharpening setting
|
|
Packit |
01d647 |
Focus, 7, 0x0007, Nikon3, Exif.Nikon3.Focus, Ascii, Focus mode
|
|
Packit |
01d647 |
FlashSetting, 8, 0x0008, Nikon3, Exif.Nikon3.FlashSetting, Ascii, Flash setting
|
|
Packit |
01d647 |
FlashDevice, 9, 0x0009, Nikon3, Exif.Nikon3.FlashDevice, Ascii, Flash device
|
|
Packit |
01d647 |
...
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
We can see those tags being used:
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
$ exiv2 -pa --grep Nikon3 http://clanmills.com/Stonehenge.jpg
|
|
Packit |
01d647 |
1519 rmills@rmillsmbp:~/gnu/github/exiv2/0.27-maintenance $ exiv2 -pa --grep Nikon3 http://clanmills.com/Stonehenge.jpg
|
|
Packit |
01d647 |
Exif.Nikon3.Version Undefined 4 2.11
|
|
Packit |
01d647 |
Exif.Nikon3.ISOSpeed Short 2 200
|
|
Packit |
01d647 |
1520 rmills@rmillsmbp:~/gnu/github/exiv2/0.27-maintenance $
|
|
Packit |
01d647 |
...
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
This information is formatted (search Nikon (format 3) MakerNote Tags): [https://exiv2.org/tags-nikon.html](https://exiv2.org/tags-nikon.html)
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### tiff-test
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: tiff-test file
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Simple TIFF write test
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### werror-test
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: werror-test
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Simple tests for the wide-string error class WError
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### write-test
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: write-test file case
|
|
Packit |
01d647 |
where case is an integer between 1 and 11
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
ExifData write unit tests
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### write2-test
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: write2-test file
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
ExifData write unit tests for Exif data created from scratch
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### xmpdump
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: xmpdump file
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Sample program to dump the XMP packet of an image
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#### xmpparser-test
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
Usage: xmpparser-test file
|
|
Packit |
01d647 |
```
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Read an XMP packet from a file, parse and re-serialize it.
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
[Sample](#TOC1) Programs [Test](#TOC2) Programs
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
Robin Mills
|
|
Packit |
01d647 |
robin@clanmills.com
|
|
Packit |
01d647 |
Revised: 2019-06-20
|