From e839638156b5d2443fed1ce49786c2788f6205aa Mon Sep 17 00:00:00 2001 From: N-R-K <79544946+N-R-K@users.noreply.github.com> Date: Sun, 2 Jan 2022 02:28:19 +0600 Subject: [PATCH] fix: jpeg exif orientation on Imlib2 v1.7.5 (#188) since Imlib2 v1.7.5, it is capable of parsing exif data on jpeg files and auto orienting them. this caused nsxiv to rotate the image twice. Closes: https://github.com/nsxiv/nsxiv/issues/187 --- image.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/image.c b/image.c index 800321a..f8c6208 100644 --- a/image.c +++ b/image.c @@ -439,7 +439,11 @@ bool img_load(img_t *img, const fileinfo_t *file) imlib_image_set_changes_on_disk(); -#if HAVE_LIBEXIF +/* since v1.7.5, Imlib2 can parse exif orientation from jpeg files. + * this version also happens to be the first one which defines the + * IMLIB2_VERSION macro. + */ +#if HAVE_LIBEXIF && !defined(IMLIB2_VERSION) exif_auto_orientate(file); #endif @@ -451,6 +455,10 @@ bool img_load(img_t *img, const fileinfo_t *file) #if HAVE_LIBWEBP if (STREQ(fmt, "webp")) img_load_webp(img, file); +#endif +#if HAVE_LIBEXIF && defined(IMLIB2_VERSION) + if (!STREQ(fmt, "jpeg") && !STREQ(fmt, "jpg")) + exif_auto_orientate(file); #endif } img->w = imlib_image_get_width();