A C++ library and command-line utility to read, write, delete, and modify Exif, IPTC, XMP, and ICC image metadata.
Exiv2 is a C++ library and command-line utility for reading, writing, and editing metadata in image files. It supports Exif, IPTC, XMP, and ICC metadata standards, allowing developers to programmatically access and modify embedded information such as camera settings, geolocation, and copyright details. The library solves the problem of standardized metadata manipulation across various image formats and platforms.
Developers working on image processing applications, digital asset management systems, photo editors, or any software requiring programmatic access to image metadata. It is also used by system integrators and researchers needing to batch-process image metadata.
Exiv2 is a mature, cross-platform, open-source solution with comprehensive metadata support, thread safety, and extensive testing. It is widely adopted and offers a stable, well-documented API and command-line tool, making it a reliable choice over proprietary alternatives or less complete libraries.
Image metadata library and tools
Handles Exif, IPTC, XMP, and ICC metadata across many formats, including BMFF files like CR3 and HEIC via optional build configuration, as detailed in the Key Features and BMFF section.
Builds on Linux, macOS, Windows, and various Unix systems, with extensive platform notes in the README for different environments like Cygwin and MinGW.
Library is reentrant for Exif/IPTC, and XMP uses mutexes for critical sections, ensuring safe use in multi-threaded applications, as explained in the Thread Safety section.
Includes unit tests, bugfix tests, and fuzzing via OSS-Fuzz, with detailed instructions in the Test Suite section, demonstrating a focus on robustness and reliability.
Requires external libraries like zlib, expat, and gettext, with platform-specific setup that can be cumbersome, as noted in the Dependencies and Platform Notes sections.
Localization is not supported for Visual Studio builds and relies on gettext, which may hinder internationalization efforts, as mentioned in the Localisation section.
Licensed under GPLv2, which can be a barrier for integration into proprietary or closed-source projects, as stated in the License section.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.