#include <libexif/exif-byte-order.h>
#include <libexif/exif-data-type.h>
#include <libexif/exif-ifd.h>
#include <libexif/exif-log.h>
#include <libexif/exif-tag.h>
#include <libexif/exif-content.h>
#include <libexif/exif-mnote-data.h>
#include <libexif/exif-mem.h>
Go to the source code of this file.
Data Structures | |
struct | _ExifData |
Represents the entire EXIF data found in an image. More... | |
Defines | |
#define | exif_data_get_entry(d, t) |
Return an ExifEntry for the given tag if found in any IFD. | |
Typedefs | |
typedef struct _ExifData | ExifData |
Represents the entire EXIF data found in an image. | |
typedef struct _ExifDataPrivate | ExifDataPrivate |
typedef void(* | ExifDataForeachContentFunc )(ExifContent *, void *user_data) |
Enumerations | |
enum | ExifDataOption { EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS = 1 << 0, EXIF_DATA_OPTION_FOLLOW_SPECIFICATION = 1 << 1, EXIF_DATA_OPTION_DONT_CHANGE_MAKER_NOTE = 1 << 2 } |
Options to configure the behaviour of ExifData. More... | |
Functions | |
ExifData * | exif_data_new (void) |
Allocate a new ExifData. | |
ExifData * | exif_data_new_mem (ExifMem *) |
Allocate a new ExifData using the given memory allocator. | |
ExifData * | exif_data_new_from_file (const char *path) |
Allocate a new ExifData and load EXIF data from a JPEG file. | |
ExifData * | exif_data_new_from_data (const unsigned char *data, unsigned int size) |
Allocate a new ExifData and load EXIF data from a memory buffer. | |
void | exif_data_load_data (ExifData *data, const unsigned char *d, unsigned int size) |
Load the ExifData structure from the raw JPEG or EXIF data in the given memory buffer. | |
void | exif_data_save_data (ExifData *data, unsigned char **d, unsigned int *ds) |
Store raw EXIF data representing the ExifData structure into a memory buffer. | |
void | exif_data_ref (ExifData *data) |
void | exif_data_unref (ExifData *data) |
void | exif_data_free (ExifData *data) |
ExifByteOrder | exif_data_get_byte_order (ExifData *data) |
Return the byte order in use by this EXIF structure. | |
void | exif_data_set_byte_order (ExifData *data, ExifByteOrder order) |
Set the byte order to use for this EXIF data. | |
ExifMnoteData * | exif_data_get_mnote_data (ExifData *d) |
Return the MakerNote data out of the EXIF data. | |
void | exif_data_fix (ExifData *d) |
Fix the EXIF data to bring it into specification. | |
void | exif_data_foreach_content (ExifData *data, ExifDataForeachContentFunc func, void *user_data) |
Execute a function on each IFD in turn. | |
const char * | exif_data_option_get_name (ExifDataOption o) |
Return a short textual description of the given ExifDataOption. | |
const char * | exif_data_option_get_description (ExifDataOption o) |
Return a verbose textual description of the given ExifDataOption. | |
void | exif_data_set_option (ExifData *d, ExifDataOption o) |
Set the given option on the given ExifData. | |
void | exif_data_unset_option (ExifData *d, ExifDataOption o) |
Clear the given option on the given ExifData. | |
void | exif_data_set_data_type (ExifData *d, ExifDataType dt) |
Set the data type for the given ExifData. | |
ExifDataType | exif_data_get_data_type (ExifData *d) |
Return the data type for the given ExifData. | |
void | exif_data_dump (ExifData *data) |
Dump all EXIF data to stdout. | |
void | exif_data_log (ExifData *data, ExifLog *log) |
Set the log message object for all IFDs. |
#define exif_data_get_entry | ( | d, | |||
t | ) |
Value:
(exif_content_get_entry(d->ifd[EXIF_IFD_0],t) ? \ exif_content_get_entry(d->ifd[EXIF_IFD_0],t) : \ exif_content_get_entry(d->ifd[EXIF_IFD_1],t) ? \ exif_content_get_entry(d->ifd[EXIF_IFD_1],t) : \ exif_content_get_entry(d->ifd[EXIF_IFD_EXIF],t) ? \ exif_content_get_entry(d->ifd[EXIF_IFD_EXIF],t) : \ exif_content_get_entry(d->ifd[EXIF_IFD_GPS],t) ? \ exif_content_get_entry(d->ifd[EXIF_IFD_GPS],t) : \ exif_content_get_entry(d->ifd[EXIF_IFD_INTEROPERABILITY],t) ? \ exif_content_get_entry(d->ifd[EXIF_IFD_INTEROPERABILITY],t) : NULL)
Each IFD is searched in turn and the first containing a tag with this number is returned.
enum ExifDataOption |
Options to configure the behaviour of ExifData.
void exif_data_dump | ( | ExifData * | data | ) |
Dump all EXIF data to stdout.
This is intended for diagnostic purposes only.
[in] | data | EXIF data |
References _ExifData::data, _ExifData::ifd, and _ExifData::size.
void exif_data_fix | ( | ExifData * | d | ) |
Fix the EXIF data to bring it into specification.
Call exif_content_fix on each IFD to fix existing entries, create any new entries that are mandatory but do not yet exist, and remove any entries that are not allowed.
[in,out] | d | EXIF data |
void exif_data_foreach_content | ( | ExifData * | data, | |
ExifDataForeachContentFunc | func, | |||
void * | user_data | |||
) |
Execute a function on each IFD in turn.
[in] | data | EXIF data over which to iterate |
[in] | func | function to call for each entry |
[in] | user_data | data to pass into func on each call |
References _ExifData::ifd.
ExifByteOrder exif_data_get_byte_order | ( | ExifData * | data | ) |
Return the byte order in use by this EXIF structure.
[in] | data | EXIF data |
References _ExifData::priv.
ExifDataType exif_data_get_data_type | ( | ExifData * | d | ) |
Return the data type for the given ExifData.
[in] | d | EXIF data |
References _ExifData::priv.
ExifMnoteData* exif_data_get_mnote_data | ( | ExifData * | d | ) |
Return the MakerNote data out of the EXIF data.
Only certain MakerNote formats that are recognized by libexif are supported. The pointer references a member of the ExifData structure and must NOT be freed by the caller.
[in] | d | EXIF data |
References _ExifData::priv.
void exif_data_load_data | ( | ExifData * | data, | |
const unsigned char * | d, | |||
unsigned int | size | |||
) |
Load the ExifData structure from the raw JPEG or EXIF data in the given memory buffer.
If the EXIF data contains a recognized MakerNote, it is loaded and stored as well for later retrieval by exif_data_get_mnote_data. If the EXIF_DATA_OPTION_FOLLOW_SPECIFICATION has been set on this ExifData, then the tags are fixed after loading.
[in,out] | data | EXIF data |
[in] | d | pointer to raw JPEG or EXIF data |
[in] | size | number of bytes of data at d |
References EXIF_DATA_OPTION_FOLLOW_SPECIFICATION, and _ExifData::priv.
Set the log message object for all IFDs.
[in] | data | EXIF data |
[in] | log | ExifLog |
References _ExifData::ifd, and _ExifData::priv.
ExifData* exif_data_new | ( | void | ) |
Allocate a new ExifData.
The ExifData contains an empty ExifContent for each IFD and the default set of options, which has EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS and EXIF_DATA_OPTION_FOLLOW_SPECIFICATION set.
ExifData* exif_data_new_from_data | ( | const unsigned char * | data, | |
unsigned int | size | |||
) |
ExifData* exif_data_new_from_file | ( | const char * | path | ) |
Allocate a new ExifData and load EXIF data from a JPEG file.
Uses an ExifLoader internally to do the loading.
[in] | path | filename including path |
Allocate a new ExifData using the given memory allocator.
The ExifData contains an empty ExifContent for each IFD and the default set of options, which has EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS and EXIF_DATA_OPTION_FOLLOW_SPECIFICATION set.
References EXIF_DATA_OPTION_FOLLOW_SPECIFICATION, EXIF_DATA_OPTION_IGNORE_UNKNOWN_TAGS, _ExifData::ifd, and _ExifData::priv.
const char* exif_data_option_get_description | ( | ExifDataOption | o | ) |
Return a verbose textual description of the given ExifDataOption.
[in] | o | option |
const char* exif_data_option_get_name | ( | ExifDataOption | o | ) |
Return a short textual description of the given ExifDataOption.
[in] | o | option |
void exif_data_save_data | ( | ExifData * | data, | |
unsigned char ** | d, | |||
unsigned int * | ds | |||
) |
Store raw EXIF data representing the ExifData structure into a memory buffer.
The buffer is allocated by this function and must subsequently be freed by the caller.
[in] | data | EXIF data |
[out] | d | pointer to buffer pointer containing raw EXIF data on return |
[out] | ds | pointer to variable to hold the number of bytes of data at d, or set to 0 on error |
References _ExifData::ifd, and _ExifData::priv.
void exif_data_set_byte_order | ( | ExifData * | data, | |
ExifByteOrder | order | |||
) |
Set the byte order to use for this EXIF data.
If any tags already exist (including MakerNote tags) they are are converted to the specified byte order.
[in,out] | data | EXIF data |
[in] | order | byte order |
References _ExifData::priv.
void exif_data_set_data_type | ( | ExifData * | d, | |
ExifDataType | dt | |||
) |
Set the data type for the given ExifData.
[in] | d | EXIF data |
[in] | dt | data type |
References _ExifData::priv.
void exif_data_set_option | ( | ExifData * | d, | |
ExifDataOption | o | |||
) |
Set the given option on the given ExifData.
[in] | d | EXIF data |
[in] | o | option |
References _ExifData::priv.
void exif_data_unset_option | ( | ExifData * | d, | |
ExifDataOption | o | |||
) |
Clear the given option on the given ExifData.
[in] | d | EXIF data |
[in] | o | option |
References _ExifData::priv.