Marco Nelissen | 548dde4 | 2014-01-07 10:11:28 -0800 | [diff] [blame] | 1 | libexif |
| 2 | ------- |
| 3 | |
| 4 | DESCRIPTION |
| 5 | ----------- |
| 6 | |
| 7 | libexif is a library for parsing, editing, and saving EXIF data. It is |
| 8 | intended to replace lots of redundant implementations in command-line |
| 9 | utilities and programs with GUIs. |
| 10 | |
| 11 | |
| 12 | FEATURES |
| 13 | -------- |
| 14 | |
| 15 | libexif supports parsing, editing and saving of EXIF data. In addition, it |
| 16 | has gettext support. All EXIF tags described in EXIF standard 2.1 (and most |
| 17 | from 2.2) are supported. Many maker notes from Canon, Casio, Epson, |
| 18 | Fuji, Nikon, Olympus, Pentax and Sanyo cameras are also supported. |
| 19 | |
| 20 | |
| 21 | REQUIREMENTS |
| 22 | ------------ |
| 23 | |
| 24 | libexif is written in plain C and does not require any additional library. |
| 25 | GNU gettext will be used for language translation, if available. |
| 26 | |
| 27 | |
| 28 | LIMITATIONS |
| 29 | ----------- |
| 30 | |
| 31 | libexif can only handle some maker notes, and even those not very well. More |
| 32 | work needs to be done. Note that libmnote has been merged with libexif - it |
| 33 | is no longer needed. |
| 34 | |
| 35 | |
| 36 | USAGE |
| 37 | ----- |
| 38 | |
| 39 | We have documented the libexif API using doxygen and are making |
| 40 | the results available at http://libexif.sourceforge.net/api/ |
| 41 | |
| 42 | The short test programs in the test directory illustrates how to create |
| 43 | valid EXIF data from scratch, how to save EXIF data and how to load EXIF |
| 44 | data from data in memory. There are also a few simple example programs |
| 45 | available in the contrib/examples/ directory. Don't hesitate to contact |
| 46 | us at <libexif-devel@lists.sourceforge.net> if you have any questions |
| 47 | on how to use libexif. |
| 48 | |
| 49 | To link to libexif into your own package, we recommend using the |
| 50 | pkgconfig utility (cf. http://www.freedesktop.org/wiki/Software/pkg-config/ For |
| 51 | your convenience, libexif both provides libexif-uninstalled.pc and |
| 52 | installs libexif.pc. |
| 53 | |
| 54 | |
| 55 | FRONTENDS |
| 56 | --------- |
| 57 | |
| 58 | Right now, I know of the following frontends to libexif: |
| 59 | - exif: A small command-line utility to show EXIF information in JPEG |
| 60 | files (http://www.sourceforge.net/projects/libexif). |
| 61 | - gexif: A GTK+ frontend for editing EXIF data |
| 62 | (http://www.sourceforge.net/projects/libexif). |
| 63 | - gphoto2: A command-line frontend to libgphoto2, a library to access a |
| 64 | wide range of digital cameras (http://www.gphoto.org). |
| 65 | - gtkam: A GTK+ frontend to libgphoto2 (http://www.gphoto.org). |
| 66 | - thirdeye: Digital photos organizer and driver for eComStation |
| 67 | (http://ecomstation.ru/thirdeye). |
| 68 | - digikam: digital photo management application for KDE |
| 69 | (http://www.digikam.org/) |
| 70 | |
| 71 | If you would like to migrate your program to use libexif or add EXIF support |
| 72 | to it, don't hesitate to contact the authors. |
| 73 | |
| 74 | |
| 75 | LIBRARIES |
| 76 | --------- |
| 77 | |
| 78 | I know of the following libraries that use or have been inspired by libexif: |
| 79 | - libexif-gtk: library of widgets to help display EXIF tags in GTK |
| 80 | programs (part of the libexif project) |
| 81 | - pel: PHP-Code (http://pel.sourceforge.net) |
| 82 | |
| 83 | |
| 84 | BUILDING |
| 85 | -------- |
| 86 | |
| 87 | It really depends on your environment what to do in order to get libexif |
| 88 | to build. Building from the source tar ball usually involves the commands: |
| 89 | |
| 90 | ./configure |
| 91 | make |
| 92 | sudo make install |
| 93 | |
| 94 | When building from source out of CVS, something like the following will be |
| 95 | necessary: |
| 96 | |
| 97 | gettextize |
| 98 | mv po/Makevars.template po/Makevars |
| 99 | aclocal -I auto-m4 -I m4m |
| 100 | autoheader |
| 101 | libtoolize --force |
| 102 | automake --add-missing |
| 103 | autoconf |
| 104 | ./configure |
| 105 | make |
| 106 | |
| 107 | Or, probably just: |
| 108 | |
| 109 | autoreconf -i |
| 110 | ./configure |
| 111 | make |
| 112 | |
| 113 | Besides the standard arguments, configure takes several specific to libexif: |
| 114 | |
| 115 | --disable-docs To disable producing any documentation |
| 116 | --enable-internal-docs Build internal code docs if Doxygen available |
| 117 | --enable-ship-binaries To include Windows DLLs in 'make dist' |
| 118 | |
| 119 | Certain specialized applications can reduce the size of the libexif |
| 120 | binary by setting one or both of the following macros in the CPPFLAGS |
| 121 | environment variable at configure time. Each one removes certain kinds of |
| 122 | text strings and constants from the binary. Applications which need |
| 123 | to access specific, known EXIF tags and know in advance the meaning of |
| 124 | their data have no need of those strings and can save considerable space |
| 125 | by eliminating them. |
| 126 | |
| 127 | -DNO_VERBOSE_TAG_STRINGS Names and descriptions of EXIF tags, debug messages, |
| 128 | mandatory EXIF fields (disabling auto-tag-fixup) |
| 129 | -DNO_VERBOSE_TAG_DATA Names of enumerated tag data contents |
| 130 | |
| 131 | |
| 132 | INTERNATIONALIZATION |
| 133 | -------------------- |
| 134 | |
| 135 | The libexif translations are made by volunteers working on their own, |
| 136 | either directly with the libexif project or through one of two translation |
| 137 | coordination sites, the Translation Project |
| 138 | <http://translationproject.org/domain/libexif.html> and Launchpad |
| 139 | <https://translations.edge.launchpad.net/ubuntu/precise/+source/libexif/+pots/libexif-12>. |
| 140 | Any updates to language translations coordinated by the Translation Project |
| 141 | must be made through their web site, but all other languages can be |
| 142 | updated either through Launchpad (preferred) or by sending updates to |
| 143 | the libexif developers mailing list directly. As of this writing, the |
| 144 | following languages must be updated through the Translation Project: |
| 145 | cs da de es fr it ja nl pl sk sv uk vi |
| 146 | |
| 147 | If you are interested in translating libexif into a new language, we |
| 148 | recommend that you join one of the above translation groups and take |
| 149 | advantage of the systems they have built to help you. A translation |
| 150 | disclaimer is NOT required for libexif at the Translation Project; by making |
| 151 | a translation, you agree implicitly to provide it under the same license |
| 152 | terms as the rest of libexif (LGPL). |
| 153 | |
| 154 | |
| 155 | AUTHORS |
| 156 | ------- |
| 157 | |
| 158 | libexif has originally been written by Curtis Galloway |
| 159 | <curtisg@users.sourceforge.net>. Because of the original design not |
| 160 | supporting editing and saving, Lutz Mueller <lutz@users.sourceforge.net> |
| 161 | rewrote libexif from scratch. Since then, many more people have contributed |
| 162 | to libexif. |
| 163 | |
| 164 | |
| 165 | LINKS |
| 166 | ----- |
| 167 | |
| 168 | Some links you might want to check out if you are interested in further |
| 169 | information about EXIF. |
| 170 | |
| 171 | - http://drewnoakes.com/code/exif: metadata extraction framework in Java |
| 172 | - http://www.exif.org: information about the EXIF standard. |
| 173 | - http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/index.html: Looks |
| 174 | like libexif in Perl. Seems to support a lot of MakerNotes. |