javascript - 使用 Fabric.js 动态自动缩放 Canvas 以在 SVG 上导出

标签 javascript html svg html5-canvas fabricjs

我正在开发简单的编辑器,可以在 Canvas 上添加/编辑文本和图像。我的默认编辑器大小是 480x317,但我希望它使用 .toSVG() 导出为 SVG,尺寸更大为 1075x709。问题是当我尝试调整 Canvas 大小并将其导出时。所有对象都无法缩放到我的 Canvas 尺寸。看起来它只是调整实际 Canvas 的大小,而不是对象的大小。 Fabric.js 上是否有一个函数可以在 Canvas 调整大小后调整对象的大小?这是 jsfiddle 上的示例代码

最佳答案

尝试缩放 Canvas

    var originWidth = canvas.getWidth();

function zoom (width, height)
    {

        var scale = width / canvas.getWidth();
        height = scale * canvas.getHeight();

        canvas.setDimensions({
            "width": width,
            "height": height
        });

        canvas.calcOffset();
        var objects = canvas.getObjects();
        for (var i in objects) {
            var scaleX = objects[i].scaleX;
            var scaleY = objects[i].scaleY;
            var left = objects[i].left;
            var top = objects[i].top;

            objects[i].scaleX = scaleX * scale;
            objects[i].scaleY = scaleY * scale;
            objects[i].left = left * scale;
            objects[i].top = top * scale;

            objects[i].setCoords();
        }

        canvas.renderAll();

}

zoom (5000);

保存后通过缩放恢复正常

关于javascript - 使用 Fabric.js 动态自动缩放 Canvas 以在 SVG 上导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21995950/

相关文章:

javascript - 使用 Youtube 的 iframe API 嵌入视频获取 "402 Payment Required"

javascript - 根据循环的值打开文件

JavaScript 不改变 ClassName

php - 借助 PHP - Image Magick 转换 .SVG 图像

javascript - 两个 svg 文本元素之间的空间

javascript - 将鼠标悬停在文本上时创建叠加层

javascript - angularjs:无法显示JS的返回值 `typeof`

html - polymer 绝对图像位置

javascript - 如何对列表项进行多项选择?

java - Android Canvas - 缩放和平移