#javascript #html5-canvas #fabricjs
#javascript #html5-холст #fabricjs
Вопрос:
Я использую theFabric.js библиотека, и я видел много примеров того, как загрузить изображение с URL-адреса с помощью Image.fromURL. Почти каждый пример присваивает изображение переменной, используя эту общую настройку:
var bgnd = new fabric.Image.fromURL(bgndURL, function(oImg){
oImg.hasBorders = false;
oImg.hasControls = false;
// ... Modify other attributes
canvas.insertAt(oImg,0);
});
Я обнаружил, что атрибуты изображения могут быть изменены только в функции обратного вызова, когда загрузка изображения завершается. Есть ли способ изменить его атрибуты позже? Я попытался изменить атрибуты bgnd
переменной напрямую, но это ничего не дает.
bgnd.set({left: 20, top: 50});
canvas.renderAll();
или
bgnd.rotation = 45;
canvas.renderAll();
они ничего не делают. Какой смысл назначать fabric.Объект изображения для bgnd
переменной, если эта переменная не может быть доступна позже? Или я использую его неправильно?
Комментарии:
1. Если я ответил на ваш вопрос ниже, пожалуйста, выберите это в качестве ответа или дайте мне знать, если у вас все еще возникает та же проблема.
Ответ №1:
После вставки изображения с помощью
canvas.insertAt(oImg,0);
canvas.setActiveObject(oImg);
myImg= canvas.getActiveObject();
Вы должны иметь возможность изменить его с помощью
myImg.rotation = 45;
Не забудьте создать переменную myImg в качестве глобальной переменной. За пределами функции image fromURL Изменить после загрузки скрипки
Комментарии:
1. Это определенно не сработает, если вы хотите получить доступ к переменной сразу после
fabric.Image.fromURL()
(а не получить к ней доступ из функции). В то время как это не относится кfabric.Image()
. [скрипка] ( jsfiddle.net/sinq/wdwtgsy7/28 )2. «Есть ли способ изменить его атрибуты позже?» Доступ сразу после этого не является частью вопроса OP. В вашем примере оповещение происходит до фактической загрузки изображения. Я не уверен, почему вы хотели бы загрузить изображение с определенными атрибутами и изменить их непосредственно после без взаимодействия с пользователем. Вы также можете загрузить его с нужными атрибутами.
3. «Я не уверен, почему вы хотели бы загрузить изображение с определенными атрибутами и изменить их непосредственно после без взаимодействия с пользователем». Не изменять их, а использовать. Пример: загруженное изображение должно быть добавлено в группу, в которой есть другой объект. Теперь второй объект должен использовать размер изображения, которое должно было быть загружено сразу после его вызова. Почему? потому что его данные (такие как ширина и высота) необходимы сразу. Два способа сделать это: один, чтобы забыть image.fromURL, второй: ( jsfiddle.net/wdwtgsy7/30 )