Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从缩放和平移的fabric.js画布导出图像_Javascript_Fabricjs - Fatal编程技术网

Javascript 如何从缩放和平移的fabric.js画布导出图像

Javascript 如何从缩放和平移的fabric.js画布导出图像,javascript,fabricjs,Javascript,Fabricjs,我使用fabric.js在画布上绘制元素, 我使用了canvas.setZoom()和canvas.getZoom()来调整画布的大小, 我还使用了一个pan通过canvas.relativePan() 我想将画布的元素导出为图像,但导出功能仅导出屏幕上的元素。 平移出画布或放大到当前视图中不再可见的点的图元不会导出 我尝试循环遍历元素以获得最小(顶部和左侧)点和最大(宽度、高度)点,并使用这些参数导出到DataURL,但仍然无法获得隐藏的元素 是否可以在不修改缩放和平移参数的情况下导出图像?您

我使用fabric.js在画布上绘制元素, 我使用了
canvas.setZoom()
canvas.getZoom()
来调整画布的大小, 我还使用了一个pan通过
canvas.relativePan()

我想将画布的元素导出为图像,但导出功能仅导出屏幕上的元素。 平移出画布或放大到当前视图中不再可见的点的图元不会导出

我尝试循环遍历元素以获得最小(顶部和左侧)点和最大(宽度、高度)点,并使用这些参数导出到DataURL,但仍然无法获得隐藏的元素


是否可以在不修改缩放和平移参数的情况下导出图像?

您可能正在使用
canvas.toDataURL()
,其中canvas是结构实例,而不是canvas元素

如果没有,那就是你需要做的

该功能支持各种参数,但不支持
排除缩放和平移
这很好,因为导出很容易:

导出并保存viewportTransfrom的副本之前,请将转换设置为identity matrix,然后进行恢复

var transform = canvas.viewportTransform.slice();
canvas.viewportTransform = [1, 0, 0, 1, 0, 0];
var dataurl = canvas.toDataURL(...your options....);
canvas.viewportTransform = transform;
在这种情况下,不应使用
canvas.setViewportTransform()
,因为它将重置所有对象边界框和交互点,可能您不需要它

导出之前不需要调用
canvas.renderal()
,但如果不起作用,请在调用
canvas.toDataURL()之前添加它。

viewportTransform是一个6位数的矩阵,表示整个缩放/平移变换