JavaScriptでsvgをpngに変換して保存する
1.svgをcanvasに描画。
GitHub - canvg/canvg: Javascript SVG parser and renderer on Canvas
canvg("canvas", "<svg>...</svg>" );
2.canvasをtoDataURL()で、Base64エンコードした文字列に変換。
toDataURL() メソッド - Canvasリファレンス - HTML5.JP
var png = document.getElementById("canvas").toDataURL();
3.pngとして保存。
いろいろ方法があるみたい。
chrome, firefoxではa要素にdownload属性をつけるとうまく1clickで保存できるので、無理やりリンクを生成してclickイベントを発生させている。
dot mapで使ったコード
$("#save-png").click(function(){ $("#map").hide(); $("#map-container").append( '<canvas id="canvas" width="' + width + 'px" height="' + height + 'px"></canvas>' ); canvg("canvas", $("#map").html() ); var png = $("#canvas")[0].toDataURL("image/png"); png = png.replace("image/png", "application/octet-stream"); $("#map-container").append( '<a id="png" type="application/octet-stream" href="" download="dotmap.png">saving...</a>' ); $("#png").attr("href", png); $("#png")[0].click(); $("#map").show(); $("#canvas").remove(); $("#png").remove(); });
dot mapをリリースしました。
ドットの日本地図に色塗りができるdot mapをリリースしました。
http://azuresky.fam.cx/d3/dotmap/
できること
- ドット日本地図に色塗り
- local strageに保存
- pngとしてダウンロード
例えば
今までに行ったことのある場所を地図に表してみると。
説明
すべてJavaScriptで動きます。
svgを扱うのが得意なd3.jsを使用して作成しました。
Google Mapの新しい地図を使う方法
mapを読み込む前に1行追加するだけ。
google.maps.visualRefresh = true;
地図のデザインが変わって良い感じ。
Concepts - Google Maps JavaScript API v3 — Google Developers