On 09/03/2010 05:07 AM, [email protected] 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
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
[email protected]
http://lists.gnu.org/mailman/listinfo/emacs-orgmode