Est-il possible d'insérer des images du web avec son URL?

11

Est-il possible d'insérer des images directement à partir du Web avec son URL org-mode? c'est-à-dire que je peux coller quelque chose comme ça dans le tampon d'emacs, pour qu'il se transforme en image de chat dans le lien image mode?

[[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]] 

Cela en fait simplement un lien cliquable dans mes paramètres actuels.

stacko
la source
1
Vous parlez org-mode, n'est-ce pas? Les images locales peuvent être alignées avec, C-c C-x C-vmais je ne pense pas que les images distantes puissent (au moins hors de la boîte).
JeanPierre
@JeanPierre Oui, images distantes en org-mode.
stacko

Réponses:

9

C'est possible avec un peu de code. Je définirais un nouveau lien comme celui-ci:

#+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

Lorsque vous cliquez dessus, vous devriez obtenir un chat en mode image. Je n'ai cependant pas défini de fonctions d'exportation. En outre, l'image est téléchargée sous forme de fichier temporaire, ce qui peut ou non vous convenir.

Ensuite, utilisez-le comme ceci:
[[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]]

Ensuite, vous pouvez utiliser ces deux fonctions pour superposer ou supprimer une image:

(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))

Cela télécharge l'image en tant que fichier temporaire s'il n'existe pas, puis place une superposition sur le lien.

John Kitchin
la source
Écrire votre propre code pour résoudre un problème? C'est de la triche , mec.
Tianxiang Xiong
3

Pas dans le tampon Org lui-même, pour autant que je sache.

Cependant, si vous exportez au format HTML, les liens vers les images seront convertis en images .

Si la description est un nom de fichier ou une URL qui pointe vers une image, l'exportation HTML (voir exportation HTML) alignera l'image sous la forme d'un bouton cliquable. S'il n'y a aucune description et que le lien pointe vers une image, cette image sera insérée dans le fichier HTML exporté.

Tianxiang Xiong
la source