2

I would love to be able to see images in Markdown that are rescaled to fit into my window. I googled for the answer but could not find how to rescale images shown with iimage-mode in Markdown. I can see a solution for org-mode or an image open with Emacs. Any idea how to do this to an inline-image in Markdown?

Workaround for now: for i in *; do convert $i -resize 800x500\> ../imgs/$i; done I rescale images in the terminal and then use them in my notes.

enter image description here

1

Resizing images only works for images types supported by the imagemagick-library. The function imagemagick-types returns a list of these types.

EDIT: Input M-: (setq val (imagemagick-types)) RET and C-h v val RET to check what the function returns. If the value of val is nil imagemagick is not enabled and you are out of luck. If the value is a list look whether your image type is member of that list.

For enabling all types supported by imagemagick set imagemagick-enabled-types to t. You can do that with M-x customize-variable RET imagemagick-enabled-types RET. Just use the option Support all ImageMagick types from the Value menu.

If this prerequisites are fulfilled you can use the following lisp code to adapt the image width to the window width in markdown-buffers.

(setq imagemagick-enabled-types t) 

(defun image-p (obj)
  "Return non-nil if OBJ is an image"
  (eq (car-safe obj) 'image))


(defun iimage-scale-to-fit-width ()
  "Scale over-sized images in the active buffer to the width of the currently selected window.
  (imagemagick must be enabled)"
  (interactive)
  (let ((max-width (window-width (selected-window) t)))
    (alter-text-property (point-min) (point-max)
                         'display
                         (lambda (prop)
                           (when (image-p prop)
                             (plist-put (cdr prop) :type 'imagemagick)
                             (plist-put (cdr prop) :max-width max-width)
                             prop)))))

(defun iimage-scale-on-window-configuration-change ()
  "Hook function for major mode that display inline images:
Adapt image size via `iimage-scale-to-fit-width' when the window size changes."
  (add-hook 'window-configuration-change-hook #'iimage-scale-to-fit-width t t))

(add-hook 'markdown-mode-hook #'iimage-scale-on-window-configuration-change)
| improve this answer | |
  • Thanks, Tobias. I tried to use this but I can not get it to run. I see iimage-scale-to-fit-width function when I M-x iimage-<tab>, so it seems that it's loaded properly. However, when I switch on the iimage mode, M-x iimage-mode nothing changes (I don't get any images inserted). I don't now lisp thus I don't know what kind of information would help you to understand the problem. – Marcin Magnus Jul 13 '17 at 14:33
  • @MarcinMagnus I added instructions how to test the return value of imagemagick-types and how to switch on the support of all types. – Tobias Jul 14 '17 at 7:10
0

The newest markdown-mode introduced markdown-max-image-size for resizing large images. It does the job! Emacs has to be compiled with ImageMagick support (--with-imagemagick).

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.