summaryrefslogtreecommitdiff
path: root/src/jpeg-utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/jpeg-utils.cpp')
-rw-r--r--src/jpeg-utils.cpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/jpeg-utils.cpp b/src/jpeg-utils.cpp
index d7382c8..be95ec9 100644
--- a/src/jpeg-utils.cpp
+++ b/src/jpeg-utils.cpp
@@ -432,8 +432,8 @@ resize_image (const gchar *src, const gchar *dst,
unsigned long size_x, unsigned long size_y,
int quality,
gboolean thumbnail,
- ThumbnailSquareType squared_thumbnail_type,
- gboolean autorotate)
+ gboolean autorotate,
+ ExifData *exif)
{
MagickWand *magick_wand;
ExceptionType severity;
@@ -460,13 +460,30 @@ resize_image (const gchar *src, const gchar *dst,
{
/* Process thumbnail if required */
if (thumbnail) {
- switch (squared_thumbnail_type) {
+ switch (exif->squared_thumbnail_type) {
case THUMBNAIL_SQUARE_TYPE_SIMPLE:
w = MagickGetImageWidth (magick_wand);
h = MagickGetImageHeight (magick_wand);
amount = MAX (w, h) * SQUARED_SIMPLE_SHAVE_AMOUNT / 100;
amount = MIN (w - 2*amount, h - 2*amount);
- MagickCropImage (magick_wand, amount, amount, (w - amount) / 2, (h - amount) / 2);
+ switch (exif->thumbnail_crop_hint) {
+ case CROP_HINT_UNDEFINED:
+ case CROP_HINT_CENTER:
+ MagickCropImage (magick_wand, amount, amount, (w - amount) / 2, (h - amount) / 2);
+ break;
+ case CROP_HINT_LEFT:
+ MagickCropImage (magick_wand, amount, amount, 0, (h - amount) / 2);
+ break;
+ case CROP_HINT_RIGHT:
+ MagickCropImage (magick_wand, amount, amount, w - amount, (h - amount) / 2);
+ break;
+ case CROP_HINT_TOP:
+ MagickCropImage (magick_wand, amount, amount, (w - amount) / 2, 0);
+ break;
+ case CROP_HINT_BOTTOM:
+ MagickCropImage (magick_wand, amount, amount, (w - amount) / 2, h - amount);
+ break;
+ }
break;
default:
break;