2016-09-01 7 views
1

はどのように生地のjsハンドラ

setTimeout(function() { 
 
     var myImg = document.querySelector("#background"); 
 
     var realWidth = myImg.naturalWidth; 
 
     var realHeight = myImg.naturalHeight; 
 
     $("canvas").attr("width", realWidth); 
 
     $("canvas").attr("height", realHeight); 
 
     var source = document.getElementById('background').src; 
 
     var canvas = new fabric.Canvas('canvas'); 
 
     canvas.width = realWidth; 
 
     canvas.height = realHeight; 
 
     var ctx = canvas.getContext('2d'); 
 
     
 
     document.getElementById('file').addEventListener("change", function (e) { 
 
      var file = e.target.files[0]; 
 
      var reader = new FileReader(); 
 
      reader.onload = function (f) { 
 
       var data = f.target.result; 
 
       fabric.Image.fromURL(data, function (img) { 
 
        
 
        var oImg = img.set({ 
 
         left: 320 
 
         , top: 180 
 
         , angle: 00 
 
         , width: 200 
 
         , height: 200 
 
        }); 
 
        canvas.add(oImg).renderAll(); 
 
        var a = canvas.setActiveObject(oImg); 
 
        var dataURL = canvas.toDataURL({ 
 
         format: 'png' 
 
         , quality: 0.8 
 
        }); 
 
       }); 
 
      }; 
 
      reader.readAsDataURL(file); 
 
     }); 
 
     canvas.setOverlayImage(source, canvas.renderAll.bind(canvas), { 
 
      backgroundImageOpacity: 0.5 
 
      , backgroundImageStretch: false 
 
     }); 
 
     canvas.on('mouse:over', function (e) { 
 
      canvas.item(0).hasBorders = true; 
 
      canvas.item(0).hasControls = true; 
 
      canvas.setActiveObject(canvas.item(0)); 
 
     }); 
 
     canvas.on('mouse:out', function (e) { 
 
      canvas.item(0).hasBorders = false; 
 
      canvas.item(0).hasControls = false; 
 
      canvas.setActiveObject(canvas.item(0)); 
 
     }); 
 
     canvas.renderAll(); 
 
    }, 2000); 
 
    $("#save").click(function() { 
 
     function blobCallback(iconName) { 
 
      return function (b) { 
 
       var a = document.getElementById('download'); 
 
       a.download = iconName + ".jpg"; 
 
       a.href = window.URL.createObjectURL(b); 
 
      } 
 
     } 
 
     canvas.toBlob(blobCallback('wallpaper'), 'image/vnd.microsoft.jpg', '-moz-parse-options:format=bmp;bpp=32'); 
 
    });
.hide { 
 
      display: none; 
 
     }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="http://cricmovie.com/bb-asserts/js/fabric.min.js"></script> 
 
<body> 
 
    <div class="container"> <img src="http://cricmovie.com/bb-asserts/images/person.png" id="background" class="hide"> 
 
     <input type="file" id="file"> 
 
     <br /> 
 
     <canvas id="canvas" class="img-responsive"></canvas> 
 
    </div> 
 
    <div class="container"> <a class="btn btn-primary" id="save">Save</a> <a class="btn btn-primary" id="download">Download</a> </div> 
 
</body>
私はsetOverlayImageを使用してキャンバスに適用される顔せずに二つの画像 1)画像を持っていたときにフェイスマスクアプリケーションを構築するために、ファブリックのJSを使用しています

をするためにZインデックスを適用しますメソッド 2)ユーザーがアップロードして調整する場所に合わせて調整します。

私はほとんど機能を果たしましたが、最初のイメージの上にファブリックハンドラを表示し、最初のイメージの後ろに隠れているようにしたいと考えています。

参照画像:Click here for reference Image

私はあなたがする必要があるすべてはあなたが生地のインスタンスを取得するときcontrolsAboveOverlayを指定していると思うの実行コードスニペット

+0

ここでコード例またはjsfiddleでコードを実行するとデバッグが少し簡単になりますか?また、デフォルトでfabricjsのハンドルが上に表示されるので、私は混乱しています。 – StefanHayden

+0

返信ありがとう、コード例で実行中のコードが添付されています。見つけてください –

答えて

0

を見つけてください。

var canvas = new fabric.Canvas('canvas', { 
     controlsAboveOverlay : true 
    }); 
+0

ありがとうございました –

関連する問題