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

fabric.js: Does resizing image using Image.set() reduce image quality?

我需要在添加到 Canvas 之前减少图像的 height/width。我们正在使用 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);
}

目标是保持图像质量,但会自动缩放大图像以适应 canvas。

谢谢,

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

请尝试以下操作:

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

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