summaryrefslogtreecommitdiff
path: root/source/fitz/util.c
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2018-10-10 16:48:00 +0200
committerTor Andersson <tor.andersson@artifex.com>2018-10-23 17:23:59 +0200
commitddd00f62888c908c84932c2a92a0c2d195b26c36 (patch)
tree4b49633f15741f34919506e5c69f85b4b8b9b803 /source/fitz/util.c
parent7b7b4de12bc50f97bd8fd32403319c6d1a758a90 (diff)
downloadmupdf-ddd00f62888c908c84932c2a92a0c2d195b26c36.tar.xz
Add fz_write_pixmap_as_data_uri helper function.
Also include "data:" schema in the data uri for fz_write_image_as_data_uri.
Diffstat (limited to 'source/fitz/util.c')
-rw-r--r--source/fitz/util.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/source/fitz/util.c b/source/fitz/util.c
index d78a2981..e89cb419 100644
--- a/source/fitz/util.c
+++ b/source/fitz/util.c
@@ -527,14 +527,14 @@ fz_write_image_as_data_uri(fz_context *ctx, fz_output *out, fz_image *image)
int type = fz_colorspace_type(ctx, image->colorspace);
if (type == FZ_COLORSPACE_GRAY || type == FZ_COLORSPACE_RGB)
{
- fz_write_string(ctx, out, "image/jpeg;base64,");
+ fz_write_string(ctx, out, "data:image/jpeg;base64,");
fz_write_base64_buffer(ctx, out, cbuf->buffer, 1);
return;
}
}
if (cbuf && cbuf->params.type == FZ_IMAGE_PNG)
{
- fz_write_string(ctx, out, "image/png;base64,");
+ fz_write_string(ctx, out, "data:image/png;base64,");
fz_write_base64_buffer(ctx, out, cbuf->buffer, 1);
return;
}
@@ -542,7 +542,22 @@ fz_write_image_as_data_uri(fz_context *ctx, fz_output *out, fz_image *image)
buf = fz_new_buffer_from_image_as_png(ctx, image, NULL);
fz_try(ctx)
{
- fz_write_string(ctx, out, "image/png;base64,");
+ fz_write_string(ctx, out, "data:image/png;base64,");
+ fz_write_base64_buffer(ctx, out, buf, 1);
+ }
+ fz_always(ctx)
+ fz_drop_buffer(ctx, buf);
+ fz_catch(ctx)
+ fz_rethrow(ctx);
+}
+
+void
+fz_write_pixmap_as_data_uri(fz_context *ctx, fz_output *out, fz_pixmap *pixmap)
+{
+ fz_buffer *buf = fz_new_buffer_from_pixmap_as_png(ctx, pixmap, NULL);
+ fz_try(ctx)
+ {
+ fz_write_string(ctx, out, "data:image/png;base64,");
fz_write_base64_buffer(ctx, out, buf, 1);
}
fz_always(ctx)