少しのコードで可能です。私はこのような新しいリンクを定義します:
#+BEGIN_SRC emacs-lisp
(org-add-link-type
"image-url"
(lambda (path)
(let ((img (expand-file-name
(concat (md5 path) "." (file-name-extension path))
temporary-file-directory)))
(if (file-exists-p img)
(find-file img)
(url-copy-file path img)
(find-file img)))))
#+END_SRC
クリックすると、画像モードの猫が表示されます。ただし、エクスポート関数は定義していません。また、イメージは一時ファイルとしてダウンロードされるので、便利な場合とそうでない場合があります。
次に、次のように使用します。
[[image-url:https://d1ra4hr810e003.cloudfront.net/media/27FB7F0C-9885-42A6-9E0C19C35242B5AC/0/D968A2D0-35B8-41C6-A94A0C5C5FCA0725/F0E9E3EC-8F99-4ED8-A40DADEAF7A011A5/dbe669e9-40be-51c9-a9a0-001b0e022be7/thul-IMG_2100.jpg]]
次に、これらの2つの関数を使用して、画像をオーバーレイまたは削除できます。
(defun image-url-overlays ()
"Put image overlays on remote image urls."
(interactive)
(loop for image-url in (org-element-map (org-element-parse-buffer) 'link
(lambda (link)
(when (string= "image-url" (org-element-property :type link))
link)))
do
(let* ((path (org-element-property :path image-url))
(ov (make-overlay (org-element-property :begin image-url)
(org-element-property :end image-url)))
(img (create-image (expand-file-name
(concat (md5 path)
"."
(file-name-extension
path))
temporary-file-directory))))
(overlay-put ov 'display img)
(overlay-put ov 'image-url t))))
(defun image-url-clear-overlays ()
"Reove overlays on image-urls."
(interactive)
(require 'ov)
(ov-clear 'image-url))
これにより、画像が存在しない場合は一時ファイルとしてダウンロードされ、リンクにオーバーレイが配置されます。
org-mode
はについて話していますよね?ローカル画像はインライン化できますC-c C-x C-v
が、リモート画像は(少なくとも箱から出して)インライン化できるとは思いません。