[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Orgmode] Embedding images as data: URIs in the HTML exporter (was:
From: |
Jan Böcker |
Subject: |
Re: [Orgmode] Embedding images as data: URIs in the HTML exporter (was: MathJax is now the default for HTML math) |
Date: |
Fri, 03 Sep 2010 17:53:01 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.11) Gecko/20100713 Thunderbird/3.0.6 |
On 09/03/2010 05:07 AM, address@hidden wrote:
> How about doing the same data: URI embedding for images in the HTML
> exporter? It should be possible to implement it entirely inside
> Emacs. It would have to be optional, of course.
>
> Derek
>
This is certainly possible, the following patch would do this to *every*
image. Maybe someone who knows the HTML exporter code better than I do
can make it configurable and submit a patch.
Bonus points for an extra option which only embeds images smaller than
32 KB to keep it compatible with Internet Explorer.
Maybe something like this configuration variable:
(defcustom org-export-html-embed-images-as-data-uris 'never
"Controls if references to inlined images (see
`org-export-html-inline-images') are replaced with their contents as a
data: URI.
Possible values:
'never (default) All images are inlined using normal URL references.
'always Embed all images as data: URIs.
'up-to-32KB Use data: URIs only for images up to 32 KByte
(Internet Explorer does not allow bigger data: URIs)
See also: http://en.wikipedia.org/wiki/Data_URI_scheme"
:group org-export-html
:type (choice (const never) (const always) (const up-to-32KB)))
-- Jan
---
lisp/org-html.el | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/lisp/org-html.el b/lisp/org-html.el
index eecda0d..5e5ec95 100644
--- a/lisp/org-html.el
+++ b/lisp/org-html.el
@@ -1820,7 +1820,7 @@ lang=\"%s\" xml:lang=\"%s\">
(if org-par-open "</p>\n" "")
(if label (format "id=\"%s\" " label) "")))
(format "<img src=\"%s\"%s />"
- src
+ (org-export-html-image-to-data-uri src)
(if (string-match "\\<alt=" (or attr ""))
(concat " " attr )
(concat " " attr " alt=\"" src "\"")))
@@ -1830,6 +1830,16 @@ lang=\"%s\" xml:lang=\"%s\">
(concat "\n<p>" caption "</p>")
(if org-par-open "\n<p>" ""))))))))
+(defun org-export-html-image-to-data-uri (src)
+ "Load an image file and convert it to a data: URI.
+See http://en.wikipedia.org/wiki/Data_URI_scheme"
+ (with-temp-buffer
+ (insert-file-contents src)
+ (base64-encode-region (point-min) (point-max))
+ (goto-char 1)
+ (insert "data:;base64,")
+ (buffer-string)))
+
(defun org-export-html-get-bibliography ()
"Find bibliography, cut it out and return it."
(catch 'exit
--
1.7.0.4