【发布时间】:2018-06-01 11:39:02
【问题描述】:
我正在使用fabricjs来实现图像编辑,并尝试使用fabric.Image对象作为画布的背景图像来存储数据。以下是代码:
var canvas = new fabric.Canvas('canvasId');
var imageObject = new fabric.Image($originImage);
canvas.add(imageObject);
但我发现 $originImage 的尺寸远大于 canvas 的尺寸和 imageObject 的尺寸,所以画布只能显示部分图像。我想知道如何拉伸 $originImage 以适应 canvas 然后 canvas 可以显示所有 $originImage?
我做了什么
$canvas.width = $originImage.clientWidth;
$canvas.height = $originImage.clientHeight;
var fabricCanvas = new fabric.Canvas('canvasId');
// canvas.setFabricCanvas(fabricCanvas);
var imageObject = new fabric.Image($originImage);
// fabricCanvas.add(imageObject);
// fabricCanvas.isDrawingMode = true;
fabricCanvas.setBackgroundImage(imageObject, fabricCanvas.renderAll.bind(fabricCanvas), {
scaleX: fabricCanvas.width / $originImage.naturalWidth,
scaleY: fabricCanvas.height / $originImage.naturalHeight
});
上面是我的相关代码,下面是显示:
解决了,上一个问题是因为我先调整了$originImage的大小,所以当我输入图片src作为setBackgroundImage的参数时,就可以正常显示了。
【问题讨论】:
-
这似乎有点不同,我尝试使用他们的解决方案,但无济于事。
-
那行得通。你用的是哪个版本的fabricjs?
-
版本是2.0,我发现scaleX或者scaleY会调整fabric.Image的大小,而不是图片本身。所以结果是 fabric.Image 确实占据了整个画布,但图像本身只是显示了一部分。附言。图像本身意味着
元素。
-
$originImage是一个图像元素,对吧?
标签: fabricjs