保留Fabric.js中Image的纵横比

时间:2013-11-06 09:39:47

标签: javascript canvas fabricjs

如何保留加载到画布上的图像的纵横比?当图像从本地系统加载到画布上时,我正在使用width=canvas.widthheight=canvas.height创建图像对象。

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

1 个答案:

答案 0 :(得分:12)

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

你应该重新计算它们:

cwch - 画布尺寸

iwih - 图片尺寸

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

fwfh - 最终尺寸

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);