diff options
| author | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2013-04-07 18:11:42 +0200 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2013-04-07 18:11:42 +0200 |
| commit | ced9539fef270fe133cb0ad6fc04c30bd5fa2dfe (patch) | |
| tree | 91e432faf1482e7adedcd0ea6e6942861325d7dc /src/generators.c | |
| parent | d912f084ffbcae0ca4b8fdfb355d6bbd6a6d3506 (diff) | |
| download | cataract-ced9539fef270fe133cb0ad6fc04c30bd5fa2dfe.tar.xz | |
Add ability to specify thumbnail square crop hint
In simple crop square mode it's sometimes viable to specify position
of the square. This is vastly useful for portrait pictures so that you
don't crop the head off the body.
Diffstat (limited to 'src/generators.c')
| -rw-r--r-- | src/generators.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/generators.c b/src/generators.c index 52ec1ac..2038424 100644 --- a/src/generators.c +++ b/src/generators.c @@ -170,6 +170,12 @@ metadata_apply_overrides (ExifData *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); + + exif_data->squared_thumbnail_type = setup->squared_thumbnail_type; + + exif_data->thumbnail_crop_hint = item->thumbnail_crop_hint; + if (exif_data->thumbnail_crop_hint == CROP_HINT_UNDEFINED) + exif_data->thumbnail_crop_hint = items->thumbnail_crop_hint; } @@ -212,6 +218,9 @@ generate_image (TGallerySetup *setup, if (img_src == NULL || img_dst == NULL) continue; + exif_data = exif_data_new_empty (); + metadata_apply_overrides (exif_data, setup, path_info, items, item); + /* Do something when required */ res = res || needs_update (img_src, img_dst); if (! query_update) { @@ -251,7 +260,7 @@ generate_image (TGallerySetup *setup, quality = item->quality; /* Perform resize and strip */ - if (! resize_image (img_src, img_dst, img_w, img_h, quality, is_thumbnail, setup->squared_thumbnail_type, setup->autorotate)) + if (! resize_image (img_src, img_dst, img_w, img_h, quality, is_thumbnail, setup->autorotate, exif_data)) log_error ("generate_image: error resizing image %s\n", img_src); } else { log_error ("generate_image: image %s sizes are %lux%lu\n", img_src, img_w, img_h); @@ -259,12 +268,10 @@ generate_image (TGallerySetup *setup, } } if (! is_thumbnail) { - exif_data = exif_data_new_empty (); - metadata_apply_overrides (exif_data, setup, path_info, items, item); modify_exif (img_dst, exif_data, setup->erase_exif_thumbnail, setup->strip_xmp); - exif_data_free (exif_data); } + exif_data_free (exif_data); g_free (img_src); g_free (img_dst); } |
