diff options
| author | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2013-03-16 21:10:55 +0100 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2013-03-16 21:10:55 +0100 |
| commit | 63771101e134b9065b6673a8b70b8d4014d359e9 (patch) | |
| tree | 8661997fb350b986e21f72c553c130d1ca4b487b /src/generators.c | |
| parent | c5cb4c32d746fd0e0648b386f5528fee7e39b731 (diff) | |
| download | cataract-63771101e134b9065b6673a8b70b8d4014d359e9.tar.xz | |
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.
Diffstat (limited to 'src/generators.c')
| -rw-r--r-- | src/generators.c | 12 |
1 files changed, 10 insertions, 2 deletions
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) && |
