Apakah mungkin memasukkan gambar dari web dengan url-nya?

11

Apakah mungkin memasukkan gambar langsung dari web dengan url-nya org-mode? yaitu, bisakah saya menempelkan sesuatu seperti ini ke buffer emacs, sehingga ia berubah menjadi gambar kucing di tautan 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]] 

Itu hanya membuatnya menjadi tautan yang dapat diklik dalam pengaturan saya saat ini.

stacko
sumber
1
Anda sedang berbicara tentang org-mode, bukan? Gambar lokal dapat digarisbawahi dengan C-c C-x C-vtetapi saya tidak berpikir yang jauh dapat (setidaknya di luar kotak).
JeanPierre
@ JeanPierre Ya, gambar jarak jauh di org-mode.
stacko

Jawaban:

9

Mungkin dengan sedikit kode. Saya akan mendefinisikan tautan baru seperti ini:

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

Ketika Anda mengkliknya, Anda harus mendapatkan kucing dalam mode gambar. Saya tidak mendefinisikan fungsi ekspor. Juga, gambar diunduh sebagai tempfile, yang mungkin atau mungkin tidak nyaman bagi Anda.

Kemudian gunakan seperti ini:
[[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]]

Kemudian Anda dapat menggunakan dua fungsi ini untuk overlay atau menghapus gambar:

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

Ini mengunduh gambar sebagai tempfile jika tidak ada, dan kemudian meletakkan overlay pada tautan.

John Kitchin
sumber
Menulis kode Anda sendiri untuk menyelesaikan masalah? Itu curang , bung.
Tianxiang Xiong
3

Tidak dalam buffer Organisasi itu sendiri, sejauh yang saya tahu.

Namun, jika Anda mengekspor ke HTML, tautan ke gambar akan dikonversi menjadi gambar .

Jika deskripsi adalah nama file atau URL yang mengarah ke gambar, ekspor HTML (lihat ekspor HTML) akan menyamakan gambar sebagai tombol yang dapat diklik. Jika tidak ada deskripsi sama sekali dan tautannya menunjuk ke suatu gambar, gambar itu akan dimasukkan ke dalam file HTML yang diekspor.

Tianxiang Xiong
sumber