How to resize images in org-mode

HtmlImageResizeExportOrg Mode

Html Problem Overview


Is there a general way to define the size, in percent or pixels, for an image that is linked in org-mode?

Say I have the following link in my .org file:

[[~/images/example.jpg]]

This JPG is way too large, so if I export it to HTML or LaTeX or open it in org-mode with C-c C-o i will only see a fraction of the image.

Html Solutions


Solution 1 - Html

As of Org 8.0, "Attribute lines now take plists" :

#+attr_html: :width 100px
#+attr_latex: :width 100px
[[~/images/example.jpg]]

Solution 2 - Html

As per Jacobo's comment, add the following to your init.el file:

(setq org-image-actual-width nil)

Then in org-mode, you can use this for inline previews of JPGs and PNGs.

#+ATTR_ORG: :width 100
[[~/images/example.svg]]

and if you want to size this for both inline previews and html output:

#+ATTR_HTML: width="100px"
#+ATTR_ORG: :width 100
[[~/images/example.svg]]

Solution 3 - Html

#+ATTR_HTML: width="100px"
[[~/images/example.jpg]]

Solution 4 - Html

This is a sample on how to resize an image using percentages (Org mode version 9.0.5):

#+CAPTION: Weight space                                                                                                                                     
#+ATTR_HTML: :alt neural network :title Neural network representation :align right                                                                          
#+ATTR_HTML: :width 50% :height 50%                                                                                                                         
https://i.stack.imgur.com/nzHSl.jpg

Solution 5 - Html

For LaTeX, to remove the default width=.9\linewidth, set the org-latex-image-default-width to empty string. By this way, the image will have its natural size.

To do that on the fly use the set-variable emacs command. Or to set this variable permanently, add the following line in your init.el : (setq org-latex-image-default-width "")

Solution 6 - Html

Here is a way to resize images in emacs Org mode for preview (not exporting). Typically,

  1. We want to set an image to a specific width like 249px when we need to.
  2. We want to set a default image width, so that we don't need to specify +attr_html for every image - that would be tedious.

This can be achieved by configuring org-image-actual-width like follows:

(setq org-image-actual-width (list 550))

Then, in your .org file, if you have

#+attr_html :width 249
[[~/images/example1.jpg]]

then the image will be displayed in preview at width 249px. For another image, where no +attr_* is specified, the default width of 550px will be applied.

[[~/images/example2.jpg]]

You can see this behavior from the documentation in org-mode source code:

When set to a number in a list, try to get the width from any
#+ATTR.* keyword if it matches a width specification like
  #+ATTR_HTML: :width 300px
and fall back on that number if none is found.

I found it hard to understand what does "a number in a list mean", so I looked at the implementation, and indeed, something like (list 550) works.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser1323995View Question on Stackoverflow
Solution 1 - HtmlyPhilView Answer on Stackoverflow
Solution 2 - HtmlAdamView Answer on Stackoverflow
Solution 3 - HtmlbzgView Answer on Stackoverflow
Solution 4 - HtmlAliothView Answer on Stackoverflow
Solution 5 - Html6piView Answer on Stackoverflow
Solution 6 - HtmlzkytonyView Answer on Stackoverflow