2016-07-28 66 views
1

我們正在使用stackoverflow links代碼上傳圖像的網站圖片在小空間僅佔箱內

一旦我們上傳,它在箱僅佔很少一部分here

但圖像應該佔滿整個盒子。

enter image description here

var canvas = new fabric.Canvas('canvas'); 
 
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: 0, top: 0, angle: 00,width:100, height:100}).scale(0.9); 
 
     canvas.add(oImg).renderAll(); 
 
     var a = canvas.setActiveObject(oImg); 
 
     var dataURL = canvas.toDataURL({format: 'png', quality: 0.8}); 
 
    }); 
 
    }; 
 
    reader.readAsDataURL(file); 
 
});
canvas{ 
 
    border: 1px solid black; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.min.js"></script> 
 
<input type="file" id="file"><br /> 
 
<canvas id="canvas" width="450" height="450"></canvas>

+0

爲什麼不'width'和'height' 450,而不是100,同時設置呢? –

+1

@GuruprasadRao在canvas.getWidth()和canvas.getHeight()方面更好的寬度和高度,所以如果稍後有人改變了canvas的尺寸,他們也不需要在這裏改變它。使代碼更易於維護。 – AgataB

+0

同意@AgataB ..這是更好的方式.. :) +1已經添加,我是第一個upvote .. :) –

回答

3

與替換行

var oImg = img.set({left: 0, top: 0, angle: 00,width:100, height:100}).scale(0.9); 

var oImg = img.set({left: 0, top: 0, angle: 00, width: canvas.getWidth(), height: canvas.getHeight()}); 

這是限制您的圖像大小。此外,我不知道你爲什麼在那裏有規模 - 但如果你保持它爲.scale(0.9),它不會填滿整個盒子。相反,它只會填充其寬度和高度的90%。

片段

var canvas = new fabric.Canvas('canvas'); 
 
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: 0, top: 0, angle: 00,width:canvas.getWidth(), height:canvas.getHeight()}); 
 
     canvas.add(oImg).renderAll(); 
 
     var a = canvas.setActiveObject(oImg); 
 
     var dataURL = canvas.toDataURL({format: 'png', quality: 0.8}); 
 
    }); 
 
    }; 
 
    reader.readAsDataURL(file); 
 
});
canvas{ 
 
    border: 1px solid black; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.min.js"></script> 
 
<input type="file" id="file"><br /> 
 
<canvas id="canvas" width="450" height="450"></canvas> 
 
Run code snippet

+0

我不知道爲什麼他們在這個鏈接中使用縮放,我剛剛複製了你的代碼並替換了它,它的工作正常。非常感謝。 – fresher