Я работаю над веб-приложением, которое позволяет пользователям создавать динамические слайд-шоу. В настоящее время у меня есть проблема, независимо от того, как добавить изображение от пользователя компьютера на холст. Я использую кнопку ввода, чтобы получить файл с компьютера, и он обращается к функции, которая добавит изображение на холст.
До сих пор я пробовал разные способы добавления изображения на холст, а также этот: Динамически добавить изображение на холст
Но код, показанный здесь, не работает в моем случае, потому что он просто рисует изображение на холсте, но не позволяет перетаскивать его и изменять его размер, как в демо-версии Kitchensink.js от Fabricsjs.
Я также пытался преобразовать изображение в Base64 и использовать LoadJSON, чтобы преобразовать его обратно, но я столкнулся с этой ошибкой:
Uncaught TypeError: Cannot read property 'length' of undefined fabric.js:2089
enlivenObjects fabric.js:2089
fabric.util.object.extend._enlivenObjects fabric.js:9025
fabric.util.object.extend.loadFromJSON fabric.js:8953
sub
Sub ссылается на функцию, которую я вызвал для добавления изображения.
Я также пробовал этот код:
document.getElementById('imgLoader').onchange = function handleImage(e){
var reader = new FileReader();
reader.onload = function(event){
var img = new fabric.Image();
img.onload = function(){
img.set({
left : 250,
top : 250,
angle : 20,
padding: 10,
cornersize: 10
});
image.scale(getRandomNum(0.1, 0.25)).setCoords();
canvas.add(image);
}
img.src = event.target.result;
}
reader.readAsDataURL(e.target.files[0]);
}
Которые ловят эти ошибки:
Uncaught TypeError: Cannot read property 'width' of undefined fabric.js:14358
fabric.Image.fabric.util.createClass._setWidthHeight fabric.js:14358
fabric.Image.fabric.util.createClass._initConfig fabric.js:14334
fabric.Image.fabric.util.createClass.setElement fabric.js:14127
fabric.Image.fabric.util.createClass._initElement fabric.js:14322
fabric.Image.fabric.util.createClass.initialize fabric.js:14097
(anonymous function) fabric.js:2679
klass fabric.js:2728
reader.onload diapo.js:746
У меня явно закончились идеи, и я только нарисовал изображение, но не добавил его на холст.
Все в одном я хотел бы добавить изображение на мой холст Fabricjs с теми же атрибутами, независимо от перетаскивания, что и в демонстрации Kitchensink. Заранее спасибо за вашу помощь :)
**img**.scale(getRandomNum(0.1, 0.25)).setCoords(); canvas.add(**img**);
вместо**image**.scale(getRandomNum(0.1, 0.25)).setCoords(); canvas.add(**image**);
? - person Kevin Heidt   schedule 15.07.2014