我正在使用FabricJS構建我的在線T恤設計師的新版本,以取代我幾年前創建的現有Flash。使用Fabric.js,當縮放圖像時,如何將其替換爲其他圖像?
我遇到了一個我需要幫助的問題。我使用的所有圖像都是光柵圖像。在縮放圖像或對其進行更改(如重新着色)時,我會調用服務器以創建新圖像,然後我需要能夠替換畫布上的現有圖像。
我一直能弄清楚如何做到這一點的唯一方法是使用canvas方法getActiveObject()。這工作正常,但如果您選擇了多個對象,則不知道要更新哪個對象。
當圖像最初添加到畫布時,我將onModified事件處理程序附加到畫布上。只有在圖像的比例發生變化時,纔可以調用服務器端腳本來生成新圖像。我目前使用的代碼如下所示。任何幫助將不勝感激。
感謝
fabric.Image.fromURL(previewPath, function (img) {
var sprite = img.set({ left: leftX, top: topY, angle: angle, borderColor: 'black', cornerColor: 'red', cornerSize: 6, transparentCorners: false });
$scope.canvas.add(sprite);
$scope.canvas.renderAll();
sprite.on('modified', function() {
// Modified event is only executed for scaling
if (1 != sprite.scaleX.toString() || 1 != sprite.scaleY.toString()) {
fabric.Image.fromURL(previewPath, function (img) {
var newSprite = img.set({ left: leftX, top: topY, angle: angle, width: width, height: height });
// Replaces visible object on canvas
// Since new image is replacing old one, need to set the scale back to 1
sprite.scale(1);
$scope.canvas.renderAll();
});
}
});