javascript – 保留Fabric.js中Image的宽高比

如何保留加载到画布上的图像的宽高比?当图像从本地系统加载到画布上时,我正在创建宽度= canvas.width和height = canvas.height的图像对象.

但质量缺失.即使加载的图像分辨率更高.有没有办法保留加载图像的宽高比?

解决方法

我做对了吗:你想用画面填充画布,保持比例并隐藏溢出?

你应该重新计算它们:

cw,ch – 帆布尺寸

iw,ih – 图像尺寸

ih = imgObj.naturalHeight;
iw = imgObj.naturalWidth;

fw,fh – 最终尺寸

width_ratio  = cw  / iw;
height_ratio = ch / ih;
if (width_ratio > height_ratio) {
    fw = iw * width_ratio;
    fh = ih*fw/iw;
} else {
    fh = ih * height_ratio;
    fw = iw*fh/ih;    
}

然后只是提供这样的选项

var image = new fabric.Image(imgObj);
image.set({
    width:fw,height:fh
});

canvas.add(image);

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...