如何将图像添加到画布,缩放到大小?

时间:2018-01-20 15:45:44

标签: javascript canvas fabricjs

我可以在画布上添加本地图像。我的问题是,我只能通过像0.5之类的东西来缩放图像,但这并不是很有用,因为图像总是不同的。我如何将图像比例说成400px宽,但其余按比例调整,这样无论选择的图像大小如何,事情都适合并且它不是猜测游戏(目前我有一个图像缩放器的链接,我试图消除这种需要)?

我使用的是fabricjs 1.7.21。



var canvas = new fabric.Canvas("c");
canvas.setHeight(616);
canvas.setWidth(446);

// New Photo to Canvas
document.getElementById('imgLoader').onchange = function handleImage(e) {
  var reader = new FileReader();
  reader.onload = function(event) {
    var imgObj = new Image();
    imgObj.src = event.target.result;
    imgObj.onload = function() {
      var image = new fabric.Image(imgObj);
      image.set({
        left: 10,
        top: 10,
      }).scale(0.5);
      canvas.add(image);
    }
  }
  reader.readAsDataURL(e.target.files[0]);
}

canvas {
  border: 1px solid #dddddd;
}

<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.21/fabric.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<label class="btn btn-default" id="imgLoader">
            <span class="oi oi-image"></span> Add Image<input type="file" hidden>
        </label>
<canvas id="c"></canvas>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

试试这个:

&#13;
&#13;
var canvas = new fabric.Canvas("c");
canvas.setHeight(616);
canvas.setWidth(446);

// New Photo to Canvas
document.getElementById('imgLoader').onchange = function handleImage(e) {
  var reader = new FileReader();
  reader.onload = function(event) {
    var imgObj = new Image();
    imgObj.src = event.target.result;
    imgObj.onload = function() {
      var image = new fabric.Image(imgObj);
      image.width = 400;
      image.height = 400;
      image.set({
        left: 10,
        top: 10,
   
      });
      canvas.add(image);
    }
  }
  reader.readAsDataURL(e.target.files[0]);
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我正在寻找

scaleToWidth / scaleToHeight。您可以找到文档here

对@Ben发表评论的道具。我想结束这个问题。