|
Packit |
40c2f1 |
libexif
|
|
Packit |
40c2f1 |
-------
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
DESCRIPTION
|
|
Packit |
40c2f1 |
-----------
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
libexif is a library for parsing, editing, and saving EXIF data. It is
|
|
Packit |
40c2f1 |
intended to replace lots of redundant implementations in command-line
|
|
Packit |
40c2f1 |
utilities and programs with GUIs.
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
FEATURES
|
|
Packit |
40c2f1 |
--------
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
libexif supports parsing, editing and saving of EXIF data. In addition, it
|
|
Packit |
40c2f1 |
has gettext support. All EXIF tags described in EXIF standard 2.1 (and most
|
|
Packit |
40c2f1 |
from 2.2) are supported. Many maker notes from Canon, Casio, Epson,
|
|
Packit |
40c2f1 |
Fuji, Nikon, Olympus, Pentax and Sanyo cameras are also supported.
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
REQUIREMENTS
|
|
Packit |
40c2f1 |
------------
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
libexif is written in plain C and does not require any additional library.
|
|
Packit |
40c2f1 |
GNU gettext will be used for language translation, if available.
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
LIMITATIONS
|
|
Packit |
40c2f1 |
-----------
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
libexif can only handle some maker notes, and even those not very well. More
|
|
Packit |
40c2f1 |
work needs to be done. Note that libmnote has been merged with libexif - it
|
|
Packit |
40c2f1 |
is no longer needed.
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
USAGE
|
|
Packit |
40c2f1 |
-----
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
We have documented the libexif API using doxygen and are making
|
|
Packit |
40c2f1 |
the results available at https://libexif.github.io/api/
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
The short test programs in the test directory illustrates how to create
|
|
Packit |
40c2f1 |
valid EXIF data from scratch, how to save EXIF data and how to load EXIF
|
|
Packit |
40c2f1 |
data from data in memory. There are also a few simple example programs
|
|
Packit |
40c2f1 |
available in the contrib/examples/ directory. Don't hesitate to contact
|
|
Packit |
40c2f1 |
us at <libexif-devel@lists.sourceforge.net> if you have any questions
|
|
Packit |
40c2f1 |
on how to use libexif.
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
To link to libexif into your own package, we recommend using the
|
|
Packit |
40c2f1 |
pkgconfig utility (cf. https://www.freedesktop.org/wiki/Software/pkg-config/ For
|
|
Packit |
40c2f1 |
your convenience, libexif both provides libexif-uninstalled.pc and
|
|
Packit |
40c2f1 |
installs libexif.pc.
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
FRONTENDS
|
|
Packit |
40c2f1 |
---------
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
Here are a few frontends to libexif:
|
|
Packit |
40c2f1 |
- exif: A small command-line utility to show EXIF information in JPEG
|
|
Packit |
40c2f1 |
files (https://github.com/libexif/libexif).
|
|
Packit |
40c2f1 |
- gexif: A GTK+ frontend for editing EXIF data
|
|
Packit |
40c2f1 |
(https://github.com/libexif/gexif).
|
|
Packit |
40c2f1 |
- gphoto2: A command-line frontend to libgphoto2, a library to access a
|
|
Packit |
40c2f1 |
wide range of digital cameras (http://www.gphoto.org).
|
|
Packit |
40c2f1 |
- gtkam: A GTK+ frontend to libgphoto2 (http://www.gphoto.org).
|
|
Packit |
40c2f1 |
- thirdeye: Digital photos organizer and driver for eComStation
|
|
Packit |
40c2f1 |
(http://ecomstation.ru/thirdeye).
|
|
Packit |
40c2f1 |
- digikam: digital photo management application for KDE
|
|
Packit |
40c2f1 |
(https://www.digikam.org/)
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
If you would like to migrate your program to use libexif or add EXIF support
|
|
Packit |
40c2f1 |
to it, don't hesitate to contact the authors.
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
LIBRARIES
|
|
Packit |
40c2f1 |
---------
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
The following libraries use or have been inspired by libexif:
|
|
Packit |
40c2f1 |
- libexif-gtk: library of widgets to help display EXIF tags in GTK
|
|
Packit |
40c2f1 |
programs (https://github.com/libexif/libexif-gtk).
|
|
Packit |
40c2f1 |
- pel: PHP-Code (https://github.com/lsolesen/pel/)
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
BUILDING
|
|
Packit |
40c2f1 |
--------
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
It really depends on your environment what to do in order to get libexif
|
|
Packit |
40c2f1 |
to build. Building from the source tar ball usually involves the commands:
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
./configure
|
|
Packit |
40c2f1 |
make
|
|
Packit |
40c2f1 |
sudo make install
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
When building from source out of git, something like the following will be
|
|
Packit |
40c2f1 |
necessary:
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
gettextize
|
|
Packit |
40c2f1 |
mv po/Makevars.template po/Makevars
|
|
Packit |
40c2f1 |
aclocal -I auto-m4 -I m4m
|
|
Packit |
40c2f1 |
autoheader
|
|
Packit |
40c2f1 |
libtoolize --force
|
|
Packit |
40c2f1 |
automake --add-missing
|
|
Packit |
40c2f1 |
autoconf
|
|
Packit |
40c2f1 |
./configure
|
|
Packit |
40c2f1 |
make
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
Or, probably just:
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
autoreconf -i
|
|
Packit |
40c2f1 |
./configure
|
|
Packit |
40c2f1 |
make
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
Besides the standard arguments, configure takes several specific to libexif:
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
--disable-docs To disable producing any documentation
|
|
Packit |
40c2f1 |
--enable-internal-docs Build internal code docs if Doxygen available
|
|
Packit |
40c2f1 |
--enable-ship-binaries To include Windows DLLs in 'make dist'
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
Certain specialized applications can reduce the size of the libexif
|
|
Packit |
40c2f1 |
binary by setting one or both of the following macros in the CPPFLAGS
|
|
Packit |
40c2f1 |
environment variable at configure time. Each one removes certain kinds of
|
|
Packit |
40c2f1 |
text strings and constants from the binary. Applications which need
|
|
Packit |
40c2f1 |
to access specific, known EXIF tags and know in advance the meaning of
|
|
Packit |
40c2f1 |
their data have no need of those strings and can save considerable space
|
|
Packit |
40c2f1 |
by eliminating them.
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
-DNO_VERBOSE_TAG_STRINGS Names and descriptions of EXIF tags, debug messages,
|
|
Packit |
40c2f1 |
mandatory EXIF fields (disabling auto-tag-fixup)
|
|
Packit |
40c2f1 |
-DNO_VERBOSE_TAG_DATA Names of enumerated tag data contents
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
INTERNATIONALIZATION
|
|
Packit |
40c2f1 |
--------------------
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
The libexif translations are made by volunteers working on their own,
|
|
Packit |
40c2f1 |
either directly with the libexif project or through one of two translation
|
|
Packit |
40c2f1 |
coordination sites, the Translation Project
|
|
Packit |
40c2f1 |
<https://translationproject.org/domain/libexif.html> and Launchpad
|
|
Packit |
40c2f1 |
<https://translations.edge.launchpad.net/ubuntu/bionic/+source/libexif/+pots/libexif-12>.
|
|
Packit |
40c2f1 |
Any updates to language translations coordinated by the Translation Project
|
|
Packit |
40c2f1 |
must be made through their web site, but all other languages can be
|
|
Packit |
40c2f1 |
updated either through Launchpad (preferred) or by sending updates to
|
|
Packit |
40c2f1 |
the libexif developers mailing list directly. As of this writing, the
|
|
Packit |
40c2f1 |
following languages must be updated through the Translation Project:
|
|
Packit |
40c2f1 |
cs da de es fr it ja nl pl pt sk sv uk vi
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
If you are interested in translating libexif into a new language, we
|
|
Packit |
40c2f1 |
recommend that you join one of the above translation groups and take
|
|
Packit |
40c2f1 |
advantage of the systems they have built to help you. A translation
|
|
Packit |
40c2f1 |
disclaimer is NOT required for libexif at the Translation Project; by making
|
|
Packit |
40c2f1 |
a translation, you agree implicitly to provide it under the same license
|
|
Packit |
40c2f1 |
terms as the rest of libexif (LGPL).
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
AUTHORS
|
|
Packit |
40c2f1 |
-------
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
libexif has originally been written by Curtis Galloway
|
|
Packit |
40c2f1 |
<curtisg@users.sourceforge.net>. Because of the original design not
|
|
Packit |
40c2f1 |
supporting editing and saving, Lutz Mueller <lutz@users.sourceforge.net>
|
|
Packit |
40c2f1 |
rewrote libexif from scratch. Since then, many more people have contributed
|
|
Packit |
40c2f1 |
to libexif.
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
LINKS
|
|
Packit |
40c2f1 |
-----
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
Some links you might want to check out if you are interested in further
|
|
Packit |
40c2f1 |
information about EXIF.
|
|
Packit |
40c2f1 |
|
|
Packit |
40c2f1 |
- https://drewnoakes.com/code/exif: metadata extraction framework in Java
|
|
Packit |
40c2f1 |
- https://www.exif.org: information about the EXIF standard.
|
|
Packit |
40c2f1 |
- https://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/index.html: Looks
|
|
Packit |
40c2f1 |
like libexif in Perl. Seems to support a lot of MakerNotes.
|