繁体   English   中英

将svg转换为canvas并获取base64字符串(canvg)

[英]Converting svg to canvas and get the base64 String (canvg)

我们在Java中使用带有canvg https://code.google.com/p/canvg/的本机方法将SVG字符串转换为canvas到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”); 在回调之外工作? 我唯一可以想象的就是在function()内部调用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);
        },
    });

}-*/;

您必须通过方法的路径来调用函数。 希望对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM