将内嵌svg保存为图像文件 [英] Saving inline svg as a image file
本文介绍了将内嵌svg保存为图像文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个内联SVG代码,该代码会根据用户对颜色/css的选择进行更改.
I have a inline SVG code that changes base on user selection of colors/css.
我希望能够将svg行保存为onclick(svg或png或jpeg)的外部文件.
I would like to have the ability to save the line svg as a external file onclick (svg or png or jpeg).
示例: http://jsfiddle.net/WebbySmart/fof8jqxx/
<svg height="100" width="100">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>
<div style="clear:both;"></div>
<br>
<button>Save Image</button>
有没有办法做到这一点?非常感谢-谢谢.
Is there any way to do this? Much appreciated - thanks.
推荐答案
找到了完美的解决方案.
Found a solution that works perfectly.
<button>svg to png</button>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="200" height="200">
<rect x="10" y="10" width="50" height="50" />
<text x="0" y="100">Look, i'm cool</text>
</svg>
<canvas id="canvas"></canvas>
JavaScript
Stright javascript
var btn = document.querySelector('button');
var svg = document.querySelector('svg');
var canvas = document.querySelector('canvas');
function triggerDownload (imgURI) {
var evt = new MouseEvent('click', {
view: window,
bubbles: false,
cancelable: true
});
var a = document.createElement('a');
a.setAttribute('download', 'MY_COOL_IMAGE.png');
a.setAttribute('href', imgURI);
a.setAttribute('target', '_blank');
a.dispatchEvent(evt);
}
btn.addEventListener('click', function () {
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var data = (new XMLSerializer()).serializeToString(svg);
var DOMURL = window.URL || window.webkitURL || window;
var img = new Image();
var svgBlob = new Blob([data], {type: 'image/svg+xml;charset=utf-8'});
var url = DOMURL.createObjectURL(svgBlob);
img.onload = function () {
ctx.drawImage(img, 0, 0);
DOMURL.revokeObjectURL(url);
var imgURI = canvas
.toDataURL('image/png')
.replace('image/png', 'image/octet-stream');
triggerDownload(imgURI);
};
img.src = url;
});
参考来自: 将嵌入式SVG保存为JPEG/PNG/SVG .
这篇关于将内嵌svg保存为图像文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文