我正在使用 Raphael 绘制一个对象,然后使用 canvg 将其传输到 HTML 画布元素,以便我可以使用 toDataURL 将其保存为 PNG。但是当我使用canvg时,生成的图像是模糊的。例如,下面的代码会产生这个(顶部是 raphael,底部是 canvg):
<html>
<head>
<script src="lib/raphael-min.js"></script>
<script type="text/javascript" src="http://canvg.googlecode.com/svn/trunk/rgbcolor.js"></script>
<script type="text/javascript" src="http://canvg.googlecode.com/svn/trunk/StackBlur.js"></script>
<script type="text/javascript" src="http://canvg.googlecode.com/svn/trunk/canvg.js"></script>
<script src="lib/raphael.export.js"></script>
</head>
<body>
<div id="raph_canvas"></div><br>
<canvas id="html_canvas" width="50px" height="50px"></canvas>
<script language="JavaScript">
var test=Raphael("raph_canvas",50,50);
var rect=test.rect(0,0,50,50);
rect.attr({fill: '#fff000', 'fill-opacity':1, 'stroke-width':1})
window.onload = function() {
var canvas_svg = test.toSVG();
canvg('html_canvas',canvas_svg);
var canvas_html = document.getElementById("html_canvas");
}
</script>
</body>
</html>
在 toDataURL 创建的 png 中,模糊也很明显。知道这里发生了什么吗?我认为这与重新调整大小无关。我试过设置 ignoreDimensions: True 和其他一些东西。
另一个数据点。如果我用raphael输出一些文字再用canvg,不仅模糊而且字体不对!
这是建议的 test.rect(0.5,0.5,50,50) 。仍然模糊: