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