【svg.js】html2canvas plug-in object-fit style does not take effect

Modify the html2canvas source code and replace the method code in it

CanvasRenderer.prototype.renderReplacedElement = function (container, curves, image) {
    
    
            // if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {
    
    
            //     var box = contentBox(container);
            //     var path = calculatePaddingBoxPath(curves);
            //     this.path(path);
            //     this.ctx.save();
            //     this.ctx.clip();
            //     this.ctx.drawImage(image, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height);
            //     this.ctx.restore();
            // }
            // 上面注释的原来的代码,下面是修改后的
            // Start Custom Code
            if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {
    
    
                var box = contentBox(container);
                var path = calculatePaddingBoxPath(curves);
   
                this.path(path);
                this.ctx.save();
                this.ctx.clip();
   
                let newWidth;
                let newHeight;
                let newX = box.left;
                let newY = box.top;
   
                if(container.intrinsicWidth / box.width < container.intrinsicHeight / box.height) {
    
    
                  newWidth = box.width;
                  newHeight = container.intrinsicHeight * (box.width / container.intrinsicWidth);
                  newY = box.top + (box.height - newHeight) / 2;
                } else {
    
    
                  newWidth = container.intrinsicWidth * (box.height / container.intrinsicHeight);
                  newHeight = box.height;
                  newX = box.left + (box.width - newWidth) / 2;
                }
   
                this.ctx.drawImage(image, 0, 0, container.intrinsicWidth, container.intrinsicHeight, newX, newY, newWidth, newHeight);
                this.ctx.restore();
              }
              // End Custom Code
        };
  


Guess you like

Origin blog.csdn.net/sinat_29843547/article/details/127325010