如何在 org 模式下调整图像大小

Posted

技术标签:

【中文标题】如何在 org 模式下调整图像大小【英文标题】:How to resize images in org-mode 【发布时间】:2012-07-25 02:52:23 【问题描述】:

有没有一种通用的方法来定义在org-mode 中链接的图像的大小(以百分比或像素为单位)?

假设我的.org 文件中有以下链接:

[[~/images/example.jpg]]

这个 JPG 太大了,所以如果我将它导出到 html 或 LaTeX 或在 org-mode 中用 C-c C-o i 打开它,只会看到一小部分图像。

【问题讨论】:

【参考方案1】:

根据 Jacobo 的评论,将以下内容添加到您的 init.el 文件中:

(setq org-image-actual-width nil)

然后在 org-mode 中,您可以将其用于 JPG 和 PNG 的内联预览。

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

如果你想为内联预览和 html 输出调整这个大小:

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

【讨论】:

Adam,我认为可缩放矢量图形 (SVG) 图像没有固有尺寸,因为它们被设计为可缩放的。 嗨@NiclasBörlin 看起来这是我的Emacs 版本中的一个错误(但已经解决)。我可以确认,从 Emacs 27.2(Mitsuharu 的 Emacs 的 Railwaycat Homebrew 版本)开始,它也适用于 SVG。【参考方案2】:

这是一种在 emacs Org 模式下调整图像大小以进行预览(不导出)的方法。通常,

    我们希望在需要时将图像设置为特定宽度,例如 249 像素。 我们想要设置默认图像宽度,这样我们就不需要为每张图像指定+attr_html - 这会很乏味。

这可以通过如下配置org-image-actual-width来实现:

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

然后,在您的 .org 文件中,如果您有

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

然后图像将以 249px 的宽度在预览中显示。对于未指定+attr_* 的另一张图片,将应用默认宽度550px。

[[~/images/example2.jpg]]

您可以从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.

我发现很难理解“列表中的数字”是什么意思,所以我查看了the implementation,确实,(list 550) 之类的东西有效。

【讨论】:

【参考方案3】:

截至Org 8.0,“属性行现在采用plists”:

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

【讨论】:

【参考方案4】:

对于 LaTeX,要删除默认的 width=.9\linewidth,请将 org-latex-image-default-width 设置为空字符串。通过这种方式,图像将具有其自然大小。

要即时执行此操作,请使用 set-variable emacs 命令。或者要永久设置此变量,请在 init.el 中添加以下行: (setq org-latex-image-default-width "")

【讨论】:

并将其设置为全线宽(或任何其他值),使用(setq org-latex-image-default-width "1.0\\linewidth")【参考方案5】:

这是一个关于如何使用百分比调整图像大小的示例(组织模式版本 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

【讨论】:

其他答案不适用于基于 URL 的图像 这是否也适用于内联预览?【参考方案6】:
#+ATTR_HTML: 
[[~/images/example.jpg]]

【讨论】:

感谢您的回答 bzg!首先,我希望有一个不特定于 html 但也适用于 LaTex 并在 Emacs 本身中查看的选项。无论如何,即使根据官方文档 [1][2],您的建议似乎是正确的,但它在某种程度上对我不起作用。我正在使用没有任何自定义的 emacs 24.1.1,但是当我尝试您的代码时,图像仍然是原始的巨大尺寸。这适用于 Chrome 和 Firefox。 [1] orgmode.org/worg/org-tutorials/images-and-xhtml-export.html [2] w3schools.com/tags/tag_img.asp 我也试过 #+ATTR_HTML: 如果我​​理解正确,应该按 0.3 倍(或 0.003 = 0.3%?)进行缩放,但这也没有效果. :-/ 为了让它工作,你需要在你的 .emacs 文件中设置它:(setq org-image-actual-width nil)。 Other possible values and behaviours are explained 在这篇文章中到 org-mode 的邮件列表

以上是关于如何在 org 模式下调整图像大小的主要内容,如果未能解决你的问题,请参考以下文章

为纵向和横向模式调整 UIImage 的大小

ImageMagick:如何在没有背景的情况下使用 mogrify 按比例调整大小

如何在不缩小图像的情况下在 Android 中调整图像大小?

python如何在不损失质量的情况下调整(缩小)图像的大小

在模态窗口内调整图像大小

如何在不使用css调整第一个图像大小的情况下在Wordpress页面上调整第二个图像的大小?