summaryrefslogtreecommitdiff
path: root/lisp/image.el
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2016-02-09 12:44:32 +1100
committerLars Ingebrigtsen <larsi@gnus.org>2016-02-09 12:44:32 +1100
commitc93cc660ac85db9e7932ffae6bd886034defffba (patch)
treebb433a4d98a312df336795700c7118fad86e5cca /lisp/image.el
parent4a24af2d2b2be168e37947ceb1a3906eb1da0e55 (diff)
downloademacs-c93cc660ac85db9e7932ffae6bd886034defffba.tar.gz
emacs-c93cc660ac85db9e7932ffae6bd886034defffba.tar.bz2
emacs-c93cc660ac85db9e7932ffae6bd886034defffba.zip
Add new commands to allow changing the size of images
* lisp/image.el (image-increase-size, image-decrease-size): New commands. (image-change-size): New function.
Diffstat (limited to 'lisp/image.el')
-rw-r--r--lisp/image.el29
1 files changed, 29 insertions, 0 deletions
diff --git a/lisp/image.el b/lisp/image.el
index 82a10a31113..b69d3b15a43 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -913,6 +913,35 @@ has no effect."
(imagemagick-register-types)
+(defun image-increase-size (n)
+ "Increase the image size by a factor of N.
+If N is 3, then the image size will be increased by 30%. The
+default is 20%."
+ (interactive "P")
+ (image-change-size (if n
+ (1+ (/ n 10))
+ 1.2)))
+
+(defun image-decrease-size (n)
+ "Decrease the image size by a factor of N.
+If N is 3, then the image size will be decreased by 30%. The
+default is 20%."
+ (interactive "P")
+ (image-change-size (if n
+ (- 1 (/ n 10))
+ 0.8)))
+
+(defun image-change-size (factor)
+ (unless (fboundp 'imagemagick-types)
+ (error "Can't rescale images without ImageMagick support"))
+ (let ((image (get-text-property (point) 'display)))
+ (when (or (not (consp image))
+ (not (eq (car image) 'image)))
+ (error "No image under point"))
+ (plist-put (cdr image) :type 'imagemagick)
+ (plist-put (cdr image) :scale
+ (* (or (plist-get (cdr image) :scale) 1) factor))))
+
(provide 'image)
;;; image.el ends here