使用Fabric.js添加图像

Adding images with Fabric.js

本文关键字:图像 添加 js Fabric 使用      更新时间:2023-09-26

我是JavaScript的新手,我正在使用Fabric.js创建多个图像,点击一个按钮。我从另一篇文章中找到了下面的代码,它允许形状,但我似乎不知道如何成功地制作这些图像。

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="fabric.min.js"></script>
<script type="text/javascript">
jQuery(function($){
var canvas = new fabric.Canvas('c');
$("#addCircle").click(function(){
       canvas.add(new fabric.Circle({
    radius: 20, fill: 'green', left: 100, top: 100
 }));
  });
});
</script>
</head>
<body>
<div id="wrapper">
<div id="editor">
<input type="button" id="addCircle" value="Add Circle"></div>
<canvas id="c" width="300" height="300"></canvas>
</div>
</body>
</html>

你可以很容易地添加任何你已经上传的图片,像这样的url:

这是js代码片段:

var canvas = new fabric.Canvas('c');
canvas.backgroundColor = 'yellow';
canvas.renderAll();
var myImg = 'http://www.logowik.com/uploads/images/511_android.jpg';

$('#addImage').on('click',addImg);
function addImg(){
    fabric.Image.fromURL(myImg, function(oImg) {
        var l = Math.random() * (500 - 0) + 0;
        var t = Math.random() * (500 - 0) + 0;                
            oImg.scale(0.2);
        oImg.set({'left':l});
                  oImg.set({'top':t});
            canvas.add(oImg);
        });
}

在这里,您可以在jsfiddle上找到一个实例:http://jsfiddle.net/tornado1979/1awwv3eh/1/按下按钮,可在任意位置导入图像。

祝你好运。

这就是如何使用HTML5文件API从本地计算机读取图像并在fabric.js画布中渲染:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Scripts/jquery-2.1.4.js"></script>
<script src="Scripts/fabric.min.js"></script>
<script type="text/javascript"> 
    var myAppModule = (function () {
        var outObj = {};
        var file, fileReader, img;
        var cCanvas, cImg;
        var init = function (newFile, newFileReader) {
            file = newFile;
            fileReader = newFileReader;
        };
        var onloadImage = function () {
            cCanvas = new fabric.Canvas('myCanvas');
            cCanvas.setWidth(img.width);
            cCanvas.setHeight(img.height);
            cImg = new fabric.Image(img, {
                left: 0,
                top: 0,
                angle: 0
            });
            cCanvas.add(cImg);
        };
        var onloadFile = function (e) {
            img = new Image();
            img.onload = onloadImage;
            img.src = fileReader.result;
        };
        outObj.init = init;
        outObj.OnloadFile = onloadFile;
        return outObj;
    })();
    function handleFileSelect(evt) {
        var files = evt.target.files;
        var output = [];
        for (var i = 0, f; f = files[i]; i++) {
            if (!f.type.match('image.*')) {
                continue;
            }
            var reader = new FileReader();
            myAppModule.init(f, reader);
            reader.onload = myAppModule.OnloadFile;
            reader.readAsDataURL(f);
        }
    }
    $(document).ready(function () {
        document.getElementById('selectFile').addEventListener('change', handleFileSelect, false);
    });
</script>
</head>
<body>
<canvas id="myCanvas">
</canvas>
<form id="form1">
    <input type="file" id="selectFile" name="selectFile"/>
</form>
</body>
</html>