Bhu*_*eja 5 javascript canvas html5-canvas fabricjs
我正在创建一个T恤自定义应用程序,其中我使用CSS将画布放在图像上,但问题是将该图像保存为画布.toDataURL只是给出了画布区域的一部分,但我想要整个图像.Stack Overflow上还有其他解决方案,但它们无法解决此问题.
您好,您必须使用保存邮件的文本对象创建图像对象(tshirt).
您可以将canvas + image +文本导出到函数saveImg()中,但是在jsfiddle上,您将获得Tained画布的安全消息.发生这种情况是因为在我从另一个域加载图像并且代码在另一个域上运行的示例中,您可以在Web应用程序上运行该代码而不会出现任何问题.
那是代码:
var canvas = new fabric.Canvas('c');
var scaleFactor=0.4
canvas.backgroundColor = 'yellow';
canvas.renderAll();
var myImg = 'http://izy.urweb.eu/files/tshirt.jpg';
fabric.Image.fromURL(myImg, function(myImg) {
var img1 = myImg.scale(scaleFactor).set({ left: 0, top: 0 });
var text = new fabric.Text('the_text_sample\nand more', {
fontFamily: 'Arial',
fontSize:20,
});
text.set("top",myImg.height*scaleFactor-myImg.height*scaleFactor+150);
text.set("left",myImg.width*scaleFactor/2-text.width/2);
var group = new fabric.Group([ img1,text ], { left: 10, top: 10 });
canvas.add(group);
});
$('#loadText').on('click',loadText);
$('#saveImg').on('click',saveImg);
function loadText(){
console.log($('#logo').val());
canvas._objects[0]._objects[1].text = $('#logo').val();
canvas.renderAll();
}
function saveImg(){
console.log('export image');
if (!fabric.Canvas.supports('toDataURL')) {
alert('This browser doesn\'t provide means to serialize canvas to an image');
}
else {
window.open(canvas.toDataURL('png'));
}
}
$('#left').on('click',function(){
canvas._objects[0]._objects[1].set('left',canvas._objects[0]._objects[1].left-1);
canvas.renderAll();
})
$('#right').on('click',function(){
canvas._objects[0]._objects[1].set('left',canvas._objects[0]._objects[1].left+1);
canvas.renderAll();
})
$('#top').on('click',function(){
canvas._objects[0]._objects[1].set('top',canvas._objects[0]._objects[1].top-1);
canvas.renderAll();
})
$('#bottom').on('click',function(){
canvas._objects[0]._objects[1].set('top',canvas._objects[0]._objects[1].top+1);
canvas.renderAll();
})
Run Code Online (Sandbox Code Playgroud)这就是jsfiddle的例子:http://jsfiddle.net/tornado1979/zrazuhcq/1/
希望有所帮助,祝你好运.