fabric.js:使用Image.set()调整图像大小会降低图像质量吗?

时间:2016-04-27 22:23:55

标签: javascript fabricjs

我需要在添加到Canvas之前减小图像的高度/宽度。我们正在使用fabric.js。

使用下面显示的image.set()功能调整图像大小时,是否会降低图像质量?

imgAdd.onload = function () {
var img = new fabric.Image(imgAdd);
var imgSizeObj = img.getOriginalSize();
var newImgSize = calculateAspectRatioFit(imgSizeObj.width, imgSizeObj.height, canvas.width, canvas.height);
if (imgSizeObj.width > canvas.width || imgSizeObj.height > canvas.height) {

    //Does img.set() preserve image resolution?
    img.set({
        width: newImgSize.width,
        height: newImgSize.height
    });
}

canvas.add(img);
}

目标是保持图像质量,但自动缩放大图像以适合画布。

谢谢,

2 个答案:

答案 0 :(得分:1)

不,它没有。 图像存储在object._element的属性中,除非您对其应用某些过滤器,否则不会更改。 即使在这种情况下,副本也会存储在object._originalElement

答案 1 :(得分:0)

请尝试以下方法:

var scale = bef;
img.set({
    scaleX: scale,
    scaleY: scale
});

您可以在此处找到有关此内容的更多信息:https://github.com/kangax/fabric.js/issues/176