Вставить изображение ткани на холст

#javascript #jquery #html #canvas #fabricjs

#javascript #jquery #HTML #холст #fabricjs

Вопрос:

Я настраиваю холст с идентификатором edit-canvas . Сначала я загружаю фоновое изображение и отображаю его на этом холсте. Теперь я хочу импортировать дополнительные изображения, которыми я могу манипулировать (масштабировать, перетаскивать …) с помощью Fabricjs. У меня есть такие функции, чтобы импортировать изображения каждый раз, когда я нажимаю на них перед дальнейшими манипуляциями:

 function insertImage(src){
    var canvas=new fabric.Canvas('edit-canvas');
    canvas.setBackgroundImage(url,canvas.renderAll.bind(canvas));
    fabric.Image.fromURL(src, function (img) {
        var oImg = img.set({left:0,top: 0});
        canvas.add(oImg).renderAll();
        canvas.setActiveObject(oImg);
    });
}

$('#sticker-tool .sticker-selection img').click(function(){
                    insertImage(this.src);
});
 

Когда я нажимаю на изображение, мое нарисованное фоновое изображение полностью очищается. Как я могу это исправить? Мой код теперь также не может отображать несколько импортированных изображений? Как я могу сохранить загруженное фоновое изображение и управлять импортированными изображениями, как если бы они были слоями на фоне?

Ответ №1:

Почему вы создаете новый экземпляр fabric и устанавливаете фон при каждом вызове? insertImage

var canvas=new fabric.Canvas('edit-canvas');
canvas.setBackgroundImage(url,canvas.renderAll.bind(canvas));

вызовите его один раз, а затем добавляйте новые изображения только с insertImage помощью функции.