猿问

如何设置图像的高度和宽度,使其适合 fabric.js 中的画布大小?

所以我的画布上有一个图像,我试图使图像适合画布(我希望画布内的图像与画布大小相同)。我使用scaleToWidth()和scaleToHeight()来设置图像大小。但只有其中一个有效。如果我只使用scaleToWidth(),那么它会正确缩放宽度,如果我只使用,scaleToHeight()那么它会正确缩放高度。在下面的代码中,高度被正确缩放,因为它写在下面的行中oImg.scaleToWidth(cDim.clientWidth)。但我希望宽度和高度都符合我的值。我怎样才能做到这一点?


                const canvas = new window.fabric.Canvas('c');

                const cDim = document.getElementById("canvas-dimension");

                console.log("Canvas Height: " + cDim.clientHeight);

                console.log("Canvas Width: " + cDim.clientWidth)

                let planURL = baseURL + "dream" + "/" +  "plan";

          


                window.fabric.Image.fromURL(planURL, (oImg) => {

                    

                    //let scaleW = cDim.clientWidth / oImg.getWidth;

                    // let scaleH = cDim.clientHeight / oImg.getHeight;

                   // oImg.scaleX(scaleW)


                    oImg.scaleToWidth(cDim.clientWidth)

                    oImg.scaleToHeight(cDim.clientHeight)

             

      

                    canvas.setBackgroundImage(oImg);

                    canvas.renderAll();


                },{ crossOrigin: 'anonymous'});

                setCanvas(canvas)


对此的任何帮助或解决方法将不胜感激。谢谢!


FFIVE
浏览 183回答 1
1回答

慕森卡

解决了所以我使用这种方法而不是scaleToWidthand scaleToHeight,它奏效了!let scaleW = cDim.clientWidth / oImg.width;let scaleH = cDim.clientHeight / oImg.height;oImg.set({     opacity: 1,     scaleX: scaleW,     scaleY: scaleH,});
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答