¿Es posible insertar imágenes de la web con su url?

11

¿Es posible insertar imágenes directamente desde la web con su URL org-mode? es decir, ¿puedo pegar algo como esto en el búfer de emacs para que cambie a la imagen de un gato en el enlace 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]] 

Simplemente lo convierte en un enlace en el que se puede hacer clic en mi configuración actual.

stacko
fuente
1
Estás hablando org-mode, ¿no? Las imágenes locales se pueden alinear, C-c C-x C-vpero no creo que las remotas puedan (al menos fuera de la caja).
JeanPierre
@JeanPierre Sí, imágenes remotas en org-mode.
stacko

Respuestas:

9

Es posible con un pequeño código. Definiría un nuevo enlace como este:

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

Cuando haces clic en él, debes obtener un gato en modo de imagen. Sin embargo, no definí las funciones de exportación. Además, la imagen se descarga como un archivo temporal, que puede o no ser conveniente para usted.

Entonces úsalo así:
[[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]]

Luego puede usar estas dos funciones para superponer o eliminar una imagen:

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

Esto descarga la imagen como un archivo temporal si no existe, y luego coloca una superposición en el enlace.

John Kitchin
fuente
¿Escribir tu propio código para resolver un problema? Eso es trampa , hombre.
Tianxiang Xiong
3

No dentro del búfer Org, por lo que yo sé.

Sin embargo, si exporta a HTML, los enlaces a las imágenes se convertirán en imágenes .

Si la descripción es un nombre de archivo o URL que apunta a una imagen, la exportación HTML (ver exportación HTML) incluirá la imagen como un botón en el que se puede hacer clic. Si no hay ninguna descripción y el enlace apunta a una imagen, esa imagen se insertará en el archivo HTML exportado.

Tianxiang Xiong
fuente