Function: image-crop--possibly-rotate-buffer
image-crop--possibly-rotate-buffer is a byte-compiled function defined
in image-crop.el.gz.
Signature
(image-crop--possibly-rotate-buffer IMAGE)
Source Code
;; Defined in /usr/src/emacs/lisp/image/image-crop.el.gz
(defun image-crop--possibly-rotate-buffer (image)
(when (imagep image)
(let ((content-type (image-crop--content-type (buffer-string))))
(when (image-property image :rotation)
(cond
;; We can rotate jpegs losslessly by setting the correct
;; orientation.
((and image-crop-exif-rotate
(equal content-type "image/jpeg")
(executable-find "exiftool"))
(call-process-region
(point-min) (point-max) "exiftool" t (list (current-buffer) nil) nil
(format "-Orientation#=%d"
(cl-case (truncate (image-property image :rotation))
(0 0)
(90 6)
(180 3)
(270 8)
(otherwise 0)))
"-o" "-" "-"))
;; Most other image formats have to be reencoded to do
;; rotation.
(t
(image-crop--process
image-crop-rotate-command
`((?r . ,(image-property image :rotation))
(?f . ,(cadr (split-string content-type "/")))))
(when (and (equal content-type "image/jpeg")
(executable-find "exiftool"))
(call-process-region
(point-min) (point-max) "exiftool"
t (list (current-buffer) nil) nil
"-Orientation#=0"
"-o" "-" "-")))))
(when (image-property image :width)
(image-crop--process
image-crop-resize-command
`((?w . ,(image-property image :width))
(?f . ,(cadr (split-string content-type "/")))))))))