如何在fabricjs中保留图像的位置

how to retain positions for images in fabric js

本文关键字:图像 位置 保留 fabricjs      更新时间:2023-09-26

我正在尝试使用fabric js进行图像处理。我处理的是非常巨大的图像,因此我必须在图像处理后保存画布的副本,以便下次使用jquery的id.show可以更快地显示。
但我想在准确的位置渲染图像。我使用canvas.zoomToPoint and canvas.relativePan缩放和平移图像,但在进行缩放+平移然后应用图像处理以显示隐藏画布并在隐藏画布上应用hiddencanvas.zoomToPoint and hiddencanvas.relativePan之后,它不会在我离开旧画布的确切位置渲染图像
我做错了吗。这里有一个支持Fiddle。然而,Fiddle通过上传来渲染图像,如果你缩放、平移并点击反转,反转的图像不会移动到那里。平移代码:``var panding=false;canvas.on('mous:up',function(e){平移=错误;});

    canvas.on('mouse:down', function (e) {
        panning = true;
    });
    canvas.on('mouse:move', function(e) {
        if (panning && e && e.e) {
             var x = e.offsetX, y = e.offsetY;
             var delta = new fabric.Point(e.e.movementX, e.e.movementY);
             canvas.relativePan(delta);
             //Above statement pan's the image but what to save to server in order to render the image on the exact panned location ?
        }
    });

``而这是缩放代码:canvas.zoomToPoint({ x: x, y: y }, newZoom);

我找到了答案,这是一个非常愚蠢的错误。

每个画布都有一个Viewport变换。所以,我们只需要得到canvas.viewportTransform,然后我们就可以得到ScaleX,scaleY,left,top作为[ScaleX,0,0,scaleY,left,top]。

希望它能帮助到别人。