使用Fabric创建的canvas画布背景图片,自适应画布宽高

之前的文章写过vue2使用fabric实现简单画图demo,完成批阅功能;但是功能不完善,对于很大的图片就只能显示一部分出来,不符合我们的需求。这就需要改进,对我们设置的背景图进行自适应。

有问题的canvas画布背景

修改后的画布背景就可以自适应了 

 

创建的具体代码请看之前的文章,这里只提供解决办法

js部分,重写了设置背景的方法。

主要是 使用scale在x轴和y轴上进行缩放

scaleX: _this.fabricObj.width / img.width,
scaleY: _this.fabricObj.height / img.height,

 setBackgroundImg(imgUrl) {
        // 创建一个新的 Image 对象
        var img = new Image();
        // img.crossOrigin = 'Anonymous'; // 设置允许跨域访问
        img.src = imgUrl;

        // 保存外部环境的引用
        var _this = this;

        // 在图片加载完成后执行操作
        img.onload = function () {
          var aspectRatio = img.width / img.height;
          var newWidth = 750; // 新的宽度为 750
          var newHeight = newWidth / aspectRatio; // 根据宽高比计算新的高度

          // 设置 Canvas 的宽度和高度
          _this.fabricObj.setWidth(newWidth);
          _this.fabricObj.setHeight(newHeight);
          // 将背景图片添加到Canvas中
          _this.fabricObj.setBackgroundImage(
            img.src,
            function () {
              _this.fabricObj.renderAll();
            },
            {
              scaleX: _this.fabricObj.width / img.width,
              scaleY: _this.fabricObj.height / img.height,
              crossOrigin: 'anonymous'
            }
          );
        };
      },

  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要实现canvas背景图自适应画布,可以按照以下步骤进行: 1. 获取canvas元素的宽度和高度。 2. 创建一个Image对象,并将背景图片的路径赋值给它。 3. 监听Image对象的load事件,在事件处理函数中将背景图片绘制到canvas中。 4. 在绘制背景图片之前,可以使用canvas的clearRect()方法清空画布。 5. 在绘制背景图片时,可以使用canvas的drawImage()方法,将背景图片绘制到canvas中,并设置绘制的位置和大小。 6. 在设置绘制位置和大小时,可以根据canvas的宽度和高度,计算出背景图片应该绘制的位置和大小,从而实现背景图片自适应画布。 示例代码如下: ```javascript // 获取canvas元素 var canvas = document.getElementById('myCanvas'); // 获取canvas的上下文 var ctx = canvas.getContext('2d'); // 获取canvas的宽度和高度 var canvasWidth = canvas.width; var canvasHeight = canvas.height; // 创建一个Image对象 var bgImg = new Image(); // 设置背景图片的路径 bgImg.src = 'bg.png'; // 监听Image对象的load事件 bgImg.onload = function() { // 在绘制背景图片之前清空画布 ctx.clearRect(0, 0, canvasWidth, canvasHeight); // 计算背景图片的绘制位置和大小 var bgImgX = 0; var bgImgY = 0; var bgImgWidth = canvasWidth; var bgImgHeight = canvasHeight; // 将背景图片绘制到canvas中 ctx.drawImage(bgImg, bgImgX, bgImgY, bgImgWidth, bgImgHeight); }; ``` 在实际使用中,可以根据具体情况进行调整,以达到最佳效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值