将svg转换为画布并获取base64 String(canvg)
我们在Java中使用canvg https://code.google.com/p/canvg/的本地方法将SVG字符串转换为画布到png图像。 因此,我们需要一个renderCallback,因为SVG字符串中的图像需要渲染时间,否则我们会得到一个错误的构造。 我们的代码是:
private native String PNGExport(String SVGString)/*-{
var canvas = $doc.createElement('canvas');
canvas.id = "testcanvas";
var img;
$wnd.canvg(canvas, SVGString, {
renderCallback : function() {
img = canvas.toDataURL("image/png");
var window = $wnd.open();
window.document.write('<img src="' + img + '"/>');
},
});
return img;
}-*/;
因此,包含正确的png图像的选项卡将在浏览器中打开。 但有没有可能得到这个String img = canvas.toDataURL(“image / png”); 在回调之外工作? 我能想象的唯一事情就是调用函数()中的Java方法,它将img var作为参数。 我希望有一个更好的解决方案。
我们通过调用java方法来解决它:
private native void PNGExport(String SVGString)/*-{
var canvas = $doc.createElement('canvas');
canvas.id = "testcanvas";
var theInstance = this;
var img;
$wnd.canvg(canvas, SVGString, {
renderCallback : function() {
img = canvas.toDataURL("image/png");
( function b(p) {
theInstance.@de.user.client.component.graphic.UsERGraphicEditor::saveMedium(Ljava/lang/String;)(p);
})(img);
},
});
}-*/;
您必须通过您的方法的路径调用该函数。 我希望它有帮助。
链接地址: http://www.djcxy.com/p/77333.html上一篇: Converting svg to canvas and get the base64 String (canvg)