Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
exif.h File Reference
#include "common/colorspaces.h"
#include "common/image.h"
+ Include dependency graph for exif.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef enum dt_dng_illuminant_t dt_dng_illuminant_t
 

Enumerations

enum  dt_dng_illuminant_t {
  DT_LS_Unknown = 0 ,
  DT_LS_Daylight = 1 ,
  DT_LS_Fluorescent = 2 ,
  DT_LS_Tungsten = 3 ,
  DT_LS_Flash = 4 ,
  DT_LS_FineWeather = 9 ,
  DT_LS_CloudyWeather = 10 ,
  DT_LS_Shade = 11 ,
  DT_LS_DaylightFluorescent = 12 ,
  DT_LS_DayWhiteFluorescent = 13 ,
  DT_LS_CoolWhiteFluorescent = 14 ,
  DT_LS_WhiteFluorescent = 15 ,
  DT_LS_WarmWhiteFluorescent = 16 ,
  DT_LS_StandardLightA = 17 ,
  DT_LS_StandardLightB = 18 ,
  DT_LS_StandardLightC = 19 ,
  DT_LS_D55 = 20 ,
  DT_LS_D65 = 21 ,
  DT_LS_D75 = 22 ,
  DT_LS_D50 = 23 ,
  DT_LS_ISOStudioTungsten = 24 ,
  DT_LS_Other = 255
}
 

Functions

void dt_exif_set_exiv2_taglist ()
 
const GList * dt_exif_get_exiv2_taglist ()
 
int dt_exif_read (dt_image_t *img, const char *path)
 
int dt_exif_read_from_blob (dt_image_t *img, uint8_t *blob, const int size)
 
int dt_exif_read_blob (uint8_t **blob, const char *path, const int32_t imgid, const int sRGB, const int out_width, const int out_height, const int dng_mode)
 
void dt_exif_img_check_additional_tags (dt_image_t *img, const char *filename)
 
int dt_exif_write_blob (uint8_t *blob, uint32_t size, const char *path, const int compressed)
 
int dt_exif_xmp_write (const int32_t imgid, const char *filename)
 
int dt_exif_xmp_attach_export (const int32_t imgid, const char *filename, void *metadata)
 
char * dt_exif_xmp_read_string (const int32_t imgid)
 
int dt_exif_xmp_read (dt_image_t *img, const char *filename, const int history_only)
 
int dt_exif_get_thumbnail (const char *path, uint8_t **buffer, size_t *size, char **mime_type, int *width, int *height, int min_width)
 
void dt_exif_init ()
 
void dt_exif_cleanup ()
 
char * dt_exif_xmp_encode (const unsigned char *input, const int len, int *output_len)
 
char * dt_exif_xmp_encode_internal (const unsigned char *input, const int len, int *output_len, gboolean do_compress)
 
unsigned char * dt_exif_xmp_decode (const char *input, const int len, int *output_len)
 
dt_colorspaces_color_profile_type_t dt_exif_get_color_space (const uint8_t *data, size_t size)
 
void dt_exif_get_datetime_taken (const uint8_t *data, size_t size, char *datetime_taken)
 

Typedef Documentation

◆ dt_dng_illuminant_t

wrapper around exiv2, C++

Enumeration Type Documentation

◆ dt_dng_illuminant_t

wrapper around exiv2, C++

Enumerator
DT_LS_Unknown 
DT_LS_Daylight 
DT_LS_Fluorescent 
DT_LS_Tungsten 
DT_LS_Flash 
DT_LS_FineWeather 
DT_LS_CloudyWeather 
DT_LS_Shade 
DT_LS_DaylightFluorescent 
DT_LS_DayWhiteFluorescent 
DT_LS_CoolWhiteFluorescent 
DT_LS_WhiteFluorescent 
DT_LS_WarmWhiteFluorescent 
DT_LS_StandardLightA 
DT_LS_StandardLightB 
DT_LS_StandardLightC 
DT_LS_D55 
DT_LS_D65 
DT_LS_D75 
DT_LS_D50 
DT_LS_ISOStudioTungsten 
DT_LS_Other 

Function Documentation

◆ dt_exif_cleanup()

void dt_exif_cleanup ( )

Referenced by dt_cleanup().

◆ dt_exif_get_color_space()

dt_colorspaces_color_profile_type_t dt_exif_get_color_space ( const uint8_t *  data,
size_t  size 
)

look for color space hints in data and tell the caller if it's sRGB, AdobeRGB or something else. used for mipmaps

References DT_COLORSPACE_ADOBERGB, DT_COLORSPACE_DISPLAY, DT_COLORSPACE_SRGB, and size.

Referenced by dt_imageio_jpeg_read_color_space().

◆ dt_exif_get_datetime_taken()

void dt_exif_get_datetime_taken ( const uint8_t *  data,
size_t  size,
char *  datetime_taken 
)

look for datetime_taken in data. used for gphoto downloads

References _find_datetime_taken(), read_metadata_threadsafe, and size.

◆ dt_exif_get_exiv2_taglist()

const GList * dt_exif_get_exiv2_taglist ( )

get the list of available tags from Exvi2 must not be freed

◆ dt_exif_get_thumbnail()

int dt_exif_get_thumbnail ( const char *  path,
uint8_t **  buffer,
size_t *  size,
char **  mime_type,
int *  width,
int *  height,
int  min_width 
)

fetch largest exif thumbnail jpg bytestream into buffer

Get the largest possible thumbnail from the image

References DT_DEBUG_LIGHTTABLE, dt_print(), height, MAX, read_metadata_threadsafe, size, WIDEN, and width.

Referenced by dt_imageio_large_thumbnail().

◆ dt_exif_img_check_additional_tags()

void dt_exif_img_check_additional_tags ( dt_image_t img,
const char *  filename 
)

Reads exif tags that are not cached in the database

References _check_dng_opcodes(), _check_usercrop(), read_metadata_threadsafe, and WIDEN.

Referenced by dt_imageio_open_rawspeed().

◆ dt_exif_init()

void dt_exif_init ( )

thread safe init and cleanup.

References dt_exif_log_handler().

Referenced by dt_init().

◆ dt_exif_read()

int dt_exif_read ( dt_image_t img,
const char *  path 
)

read metadata from file with full path name, XMP data trumps IPTC data trumps EXIF data, store to image struct. returns 0 on success.

read the metadata of an image. XMP data trumps IPTC data trumps EXIF data

References _exif_decode_exif_data(), _exif_decode_iptc_data(), _exif_decode_xmp_data(), dt_datetime_unix_to_img(), dt_image_t::exif_inited, dt_image_t::height, read_metadata_threadsafe, WIDEN, and dt_image_t::width.

Referenced by _image_import_internal(), _import_copy_file(), _set_test_path(), dt_control_refresh_exif_run(), dt_imageio_open_j2k(), dt_imageio_open_jpeg(), dt_imageio_open_png(), dt_imageio_open_rawspeed(), dt_imageio_open_tiff(), and update_preview_cb().

◆ dt_exif_read_blob()

int dt_exif_read_blob ( uint8_t **  blob,
const char *  path,
const int32_t  imgid,
const int  sRGB,
const int  out_width,
const int  out_height,
const int  dng_mode 
)

write exif to blob, return length in bytes. blob will be allocated by the function. sRGB should be true if sRGB colorspace is used as output.

Todo:
: find a nice place for the missing metadata (tags, publisher, colorlabels?). Additionally find out

References darktable, darktable_package_string, dt_conf_get_int(), DT_DATETIME_EXIF_LENGTH, dt_datetime_img_to_exif(), DT_DATETIME_LENGTH, dt_datetime_now_to_exif(), dt_image_cache_get(), dt_image_cache_read_release(), dt_metadata_get(), dt_remove_exif_geotag(), dt_remove_exif_keys(), dt_image_geoloc_t::elevation, dt_image_t::geoloc, darktable_t::image_cache, dt_image_geoloc_t::latitude, dt_image_geoloc_t::longitude, read_metadata_threadsafe, and WIDEN.

Referenced by dt_control_merge_hdr_job_run(), and dt_imageio_export_with_flags().

◆ dt_exif_read_from_blob()

int dt_exif_read_from_blob ( dt_image_t img,
uint8_t *  blob,
const int  size 
)

read exif data to image struct from given data blob, wherever you got it from.

Todo:
: can this blob also contain xmp and iptc data?

References _exif_decode_exif_data(), dt_image_t::filename, and size.

Referenced by dt_imageio_open_exr().

◆ dt_exif_set_exiv2_taglist()

void dt_exif_set_exiv2_taglist ( )

set the list of available tags from Exvi2

References _get_exiv2_type(), _get_xmp_tags(), dt_util_dstrcat(), and exiv2_taglist.

Referenced by dt_exif_get_exiv2_taglist(), and dt_init().

◆ dt_exif_write_blob()

int dt_exif_write_blob ( uint8_t *  blob,
uint32_t  size,
const char *  path,
const int  compressed 
)

write blob to file exif. merges with existing exif information.

References dt_remove_exif_keys(), key, read_metadata_threadsafe, size, and WIDEN.

Referenced by dt_imageio_write_dng(), write_image(), write_image(), write_image(), and write_image().

◆ dt_exif_xmp_attach_export()

◆ dt_exif_xmp_decode()

unsigned char * dt_exif_xmp_decode ( const char *  input,
const int  len,
int *  output_len 
)

◆ dt_exif_xmp_encode()

char * dt_exif_xmp_encode ( const unsigned char *  input,
const int  len,
int *  output_len 
)

◆ dt_exif_xmp_encode_internal()

char * dt_exif_xmp_encode_internal ( const unsigned char *  input,
const int  len,
int *  output_len,
gboolean  do_compress 
)

◆ dt_exif_xmp_read()

int dt_exif_xmp_read ( dt_image_t img,
const char *  filename,
const int  history_only 
)

read xmp sidecar file.

Todo:
: make this configurable? or remove it altogether?

References _exif_decode_xmp_data(), _image_altered_deprecated(), add_mask_entries_to_db(), add_mask_entry_to_db(), add_non_clone_mask_entries_to_db(), dt_history_hash_values_t::auto_apply, dt_history_hash_values_t::auto_apply_len, dt_history_hash_values_t::basic, dt_history_hash_values_t::basic_len, history_entry_t::blendop_params, history_entry_t::blendop_params_len, history_entry_t::blendop_version, dt_history_hash_values_t::current, dt_history_hash_values_t::current_len, darktable, darktable_t::db, dt_database_get(), dt_database_release_transaction, dt_database_rollback_transaction(), dt_database_start_transaction, DT_DEBUG_SQLITE3_BIND_BLOB, DT_DEBUG_SQLITE3_BIND_INT, DT_DEBUG_SQLITE3_BIND_TEXT, DT_DEBUG_SQLITE3_PREPARE_V2, dt_exif_xmp_decode(), DT_HISTORY_HASH_BASIC, DT_HISTORY_HASH_CURRENT, dt_history_hash_write(), dt_history_hash_write_from_history(), DT_IMAGE_AUTO_PRESETS_APPLIED, DT_IMAGE_NO_LEGACY_PRESETS, DT_IOP_ORDER_LEGACY, DT_IOP_ORDER_V30, dt_ioppr_deserialize_text_iop_order_list(), dt_ioppr_get_iop_order_link(), dt_ioppr_get_iop_order_list_version(), dt_ioppr_write_iop_order_list(), dt_sort_iop_list_by_order_f(), history_entry_t::enabled, FALSE, dt_image_t::flags, free_history_entry(), free_mask_entry(), dt_image_t::id, dt_iop_order_entry_t::instance, history_entry_t::iop_order, dt_iop_order_entry_t::iop_order_f, dt_image_raw_parameters_t::legacy, dt_image_t::legacy_flip, MIN, history_entry_t::modversion, history_entry_t::multi_name, history_entry_t::multi_priority, history_entry_t::num, dt_iop_order_entry_t::o, history_entry_t::operation, dt_iop_order_entry_t::operation, history_entry_t::params, history_entry_t::params_len, read_history_v1(), read_history_v2(), read_masks(), read_masks_v3(), read_metadata_threadsafe, read_xmp_timestamps(), TRUE, dt_image_raw_parameters_t::user_flip, and WIDEN.

Referenced by _image_import_internal(), dt_history_load_and_apply(), dt_image_read_duplicates(), and main().

◆ dt_exif_xmp_read_string()

char * dt_exif_xmp_read_string ( const int32_t  imgid)

◆ dt_exif_xmp_write()

int dt_exif_xmp_write ( const int32_t  imgid,
const char *  filename 
)