È possibile inserire immagini dal Web con il suo URL?


11

È possibile inserire immagini direttamente dal Web con il suo URL inserito org-mode? cioè posso incollare qualcosa del genere nel buffer di emacs, in modo che si trasformi nell'immagine di un gatto nel collegamento in 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]] 

Lo rende solo un link cliccabile nelle mie impostazioni attuali.


1
Stai parlando org-mode, vero? Le immagini locali possono essere integrate, C-c C-x C-vma non credo che quelle remote possano (almeno fuori dalla scatola).
JeanPierre,

1
@JeanPierre Sì, immagini remote in org-mode.
Stacko,

Risposte:


9

È possibile con un piccolo codice. Definirei un nuovo link come questo:

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

Quando fai clic su di esso, dovresti avere un gatto in modalità immagine. Tuttavia, non ho definito le funzioni di esportazione. Inoltre, l'immagine viene scaricata come un file di temp, che può essere o non essere conveniente per te.

Quindi usalo in questo modo:
[[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]]

Quindi è possibile utilizzare queste due funzioni per sovrapporre o rimuovere un'immagine:

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

Questo scarica l'immagine come file temporaneo se non esiste, quindi inserisce una sovrapposizione sul collegamento.


La scrittura del proprio codice per risolvere un problema? Questo è barare , l'uomo.
Tianxiang Xiong,

3

Non all'interno del buffer Org stesso, per quanto ne so.

Se esporti in HTML, tuttavia, i collegamenti alle immagini verranno convertiti in immagini .

Se la descrizione è un nome file o URL che punta a un'immagine, l'esportazione HTML (vedi esportazione HTML) incorporerà l'immagine come pulsante cliccabile. Se non è presente alcuna descrizione e il collegamento punta a un'immagine, tale immagine verrà incorporata nel file HTML esportato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.