emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 8542f66 2/3: Automatically rotate images in image-m


From: Lars Ingebrigtsen
Subject: [Emacs-diffs] master 8542f66 2/3: Automatically rotate images in image-mode based on Exif data
Date: Sun, 22 Sep 2019 08:23:54 -0400 (EDT)

branch: master
commit 8542f666023931f85817f590926cc3e9bc992b68
Author: Lars Ingebrigtsen <address@hidden>
Commit: Lars Ingebrigtsen <address@hidden>

    Automatically rotate images in image-mode based on Exif data
    
    * lisp/image-mode.el (image-toggle-display-image): Get the
    orientation from the Exif data, if any.
---
 lisp/image-mode.el | 23 ++++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/lisp/image-mode.el b/lisp/image-mode.el
index fae928f..aaec902 100644
--- a/lisp/image-mode.el
+++ b/lisp/image-mode.el
@@ -39,6 +39,7 @@
 ;;; Code:
 
 (require 'image)
+(require 'exif)
 (eval-when-compile (require 'cl-lib))
 
 ;;; Image mode window-info management.
@@ -744,17 +745,25 @@ was inserted."
         (type (if (image--imagemagick-wanted-p filename)
                   'imagemagick
                 (image-type file-or-data nil data-p)))
-         ;; :scale 1: If we do not set this, create-image will apply
-         ;; default scaling based on font size.
-        (image (if (not edges)
+        (inhibit-read-only t)
+        (buffer-undo-list t)
+        (modified (buffer-modified-p))
+        props image)
+
+    ;; Get the rotation data from the file, if any.
+    (setq image-transform-rotation
+          (or (exif-orientation
+               (ignore-error exif-error
+                 (exif-parse-buffer)))
+              0.0))
+
+    ;; :scale 1: If we do not set this, create-image will apply
+    ;; default scaling based on font size.
+    (setq image (if (not edges)
                    (create-image file-or-data type data-p :scale 1)
                  (create-image file-or-data type data-p :scale 1
                                :max-width (- (nth 2 edges) (nth 0 edges))
                                :max-height (- (nth 3 edges) (nth 1 edges)))))
-        (inhibit-read-only t)
-        (buffer-undo-list t)
-        (modified (buffer-modified-p))
-        props)
 
     ;; Discard any stale image data before looking it up again.
     (image-flush image)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]