Có thể chèn hình ảnh từ web bằng url của nó?


11

Có thể chèn hình ảnh trực tiếp từ web với url của nó org-modekhông? tức là tôi có thể dán thứ gì đó như thế này vào bộ đệm của emacs để nó thay đổi thành hình ảnh của một con mèo trong liên kết image modekhông?

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

Nó chỉ làm cho nó một liên kết có thể nhấp trong cài đặt hiện tại của tôi.


1
Bạn đang nói về org-mode, phải không? Hình ảnh cục bộ có thể được nội tuyến C-c C-x C-vnhưng tôi không nghĩ rằng hình ảnh từ xa có thể (ít nhất là ra khỏi hộp).
JeanPierre

@JeanPierre Có, hình ảnh từ xa trong org-mode.
stacko

Câu trả lời:


9

Có thể với một ít mã. Tôi sẽ xác định một liên kết mới như thế này:

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

Khi bạn nhấp vào nó, bạn sẽ nhận được một con mèo ở chế độ hình ảnh. Tôi đã không xác định chức năng xuất khẩu mặc dù. Ngoài ra, hình ảnh được tải xuống dưới dạng tempfile, có thể không thuận tiện cho bạn.

Sau đó sử dụng nó như thế này:
[[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]]

Sau đó, bạn có thể sử dụng hai chức năng này để phủ hoặc xóa hình ảnh:

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

Điều này tải xuống hình ảnh dưới dạng tempfile nếu nó không tồn tại, và sau đó đặt một lớp phủ trên liên kết.


Viết mã của riêng bạn để giải quyết một vấn đề? Đó là gian lận , anh bạn.
Tianxiang Xiong

3

Không phải trong bộ đệm Org, theo như tôi biết.

Tuy nhiên, nếu bạn xuất sang HTML, các liên kết đến hình ảnh sẽ được chuyển đổi thành hình ảnh .

Nếu mô tả là tên tệp hoặc URL trỏ đến hình ảnh, xuất HTML (xem xuất HTML) sẽ nội tuyến hình ảnh dưới dạng nút có thể nhấp. Nếu không có mô tả nào cả và liên kết trỏ đến một hình ảnh, hình ảnh đó sẽ được nội tuyến vào tệp HTML đã xuất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.