我需要在添加到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);
}
目标是保持图像质量,但自动缩放大图像以适合画布。
谢谢,
答案 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