From 63771101e134b9065b6673a8b70b8d4014d359e9 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Sat, 16 Mar 2013 21:10:55 +0100 Subject: Add support for writing external EXIF metadata back to images Turned off by default, this will copy all data from supplied external EXIF metadata file back to all generated image files. All user overrides are still applied on top of it. Another reason for turning this off is file size concern, target image files would carry a lot more information that may not be always needed and would increase total amount of data transferred. --- src/generators.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/generators.c') diff --git a/src/generators.c b/src/generators.c index 133c4c1..0e1985a 100644 --- a/src/generators.c +++ b/src/generators.c @@ -149,6 +149,7 @@ get_image_paths (TGallerySetup *setup, static void metadata_apply_overrides (ExifData *exif_data, TGallerySetup *setup, + TPathInfo *path_info, TAlbum *items, TIndexItem *item) { @@ -156,12 +157,19 @@ metadata_apply_overrides (ExifData *exif_data, g_free (exif_data->override_copyright); exif_data->override_copyright = g_strdup (setup->add_copyright); + exif_data->timezone_shift = item->metadata_tz_shift; if (exif_data->timezone_shift == 0) exif_data->timezone_shift = items->metadata_tz_shift; + exif_data->fake_datetime = item->metadata_fake_datetime; if (exif_data->fake_datetime == (time_t) -1) exif_data->fake_datetime = items->metadata_fake_datetime; + + g_free (exif_data->external_exif_data); + exif_data->external_exif_data = NULL; + if (setup->write_supplied_exif && item->metadata_external_exif) + exif_data->external_exif_data = g_build_filename (path_info->src_dir, item->metadata_external_exif, NULL); } @@ -252,7 +260,7 @@ generate_image (TGallerySetup *setup, } if (! is_thumbnail) { exif_data = exif_data_new_empty (); - metadata_apply_overrides (exif_data, setup, items, item); + metadata_apply_overrides (exif_data, setup, path_info, items, item); modify_exif (img_dst, exif_data, setup->erase_exif_thumbnail); exif_data_free (exif_data); } @@ -778,7 +786,7 @@ write_html_image (TGallerySetup *setup, if (exif == NULL) log_error ("write_html_image: error getting exif data from file \"%s\"\n", img_dst); } - metadata_apply_overrides (exif, setup, parent_items, item); + metadata_apply_overrides (exif, setup, path_info, parent_items, item); /* Test for basic EXIF keys presence */ if (exif != NULL && exif_has_key (exif, EXIF_APERTURE) && exif_has_key (exif, EXIF_FOCAL_LENGTH) && -- cgit v1.2.3