[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)