としてSVGのエンコードは、私はHTMLメールに使用するbase64で画像としてサーバーサイドD3 - Base64のイメージ
をD3チャートをエンコードしようとしているこれまでのところ私が持っている:
var express = require('express');
var app = express();
var jsdom = require('jsdom');
app.get('/chart', function (request, response) {
try {
jsdom.env(
"<html><body><svg id=\"svg\"></svg></body></html>",
['http://d3js.org/d3.v3.min.js'],
function (err, window) {
var svg = window.d3.select("svg")
.attr("width", 100)
.attr("height", 100);
svg.append("rect")
.attr("x", 10)
.attr("y", 10)
.attr("width", 80)
.attr("height", 80)
.style("fill", "orange");
var encoded = ...; // How do I now encode this?
response.send({
"html": window.d3.select("body").html(),
"encoded": encoded
});
}
);
} catch (err) {
console.error(err);
}
});
// Run Server
var port = process.env.PORT || 8305;
var server = app.listen(port, function() {
var host = server.address().address;
console.log('App listening at http://%s:%s', host, port);
});
これは、出力します便利であるSVGのhtmlは、しかし、私はまた、私は私のHTML形式の電子メールで使用できるよう、以下のようなものが含まれている必要があります秒の応答フィールドencoded
たい:
"encoded": "data:image/png;base64,iVBORw0KGgoAAAANSUhEU...etc"
は、どのように私はこのSVGをエンコードするのですか?可能であればファイルの書き込みを避け、SVGから直接エンコードされた画像に行きたいと思います。また、電子メールでSVGを使用できることは承知していますが、むしろエンコードされたイメージ形式になっています。ありがとう!
おかげで、私は、ファイルシステムへの書き込みを許可されていれば、それは物事がかなり異なるになるだろうか? – Edd
その場合、コンバータにsvgをパイプするのではなく、svgをファイルに保存して、ファイル名をコンバータに渡します。だから、それほど違いはありません。いくつかのヒントについては、imagemagickのドキュメントを見てください。 – RecencyEffect