【问题标题】:Add image to the canvas but the height and width are not as desired将图像添加到画布,但高度和宽度不符合要求
【发布时间】:2021-09-13 18:48:49
【问题描述】:

我试试https://jsfiddle.net/natchiketa/xHYjz/ 和我的功能:

  function addtesst() {
      var imgURL = 'http://i.imgur.com/8rmMZI3.jpg';
      var pugImg = new Image();
      pugImg.onload = function (img) {
          var pug = new fabric.Image(pugImg, {
              width: 800,
              height: 1000,
              left: 150,
              top: 170,
              scaleX: 0.41,
              scaleY: 0.42
          });
          canvas.add(pug);
      };
      pugImg.src = imgURL;
  }

结果:

var imgURL = 'http://i.imgur.com/8rmMZI3.jpg';

var canvas = new fabric.Canvas('canvas');

var pugImg = new Image();
pugImg.onload = function (img) {    
    var pug = new fabric.Image(pugImg, {
        angle: 45,
        width: 500,
        height: 500,
        left: 50,
        top: 70,
        scaleX: .25,
        scaleY: .25
    });
    canvas.add(pug);
};
pugImg.src = imgURL;
#canvas {
    box-shadow: 0 0 5px 1px black;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.1.0/fabric.all.min.js"></script>
<canvas id="canvas" width="640" height="480"></canvas>

如您所见,我的照片未满。 请帮我找出问题所在。 谢谢。

【问题讨论】:

    标签: javascript image fabricjs


    【解决方案1】:

    widthheight 属性实际上并不打算被它使用。它们用于设置应显示原始图像的像素数。大于原始图像尺寸的值意味着更大的容器,较小的值会导致裁剪。

    不要直接设置宽度、高度、scaleX 和 scaleY 值,而是使用这两种方法来设置图像大小:

    image.scaleToWidth(desiredWidth);
    

    image.scaleToHeight(desiredWidth);
    

    如果您有特定的尺寸并且不介意拉伸图像,您也可以这样做:

    image.set({
      'scaleX': desiredWidth / image.width,
      'scaleY': desiredHeight / image.height
    });
    

    【讨论】:

    • 非常感谢您。它工作但当我使用 scaleToWidth 然后 scaleToHeight 不工作。它们如何协同工作?
    • 您打算使用其中一个。当您使用 scaleToWidth 时,图像的高度将更改为该宽高比的正确高度,反之亦然,使用 scaleToHeight
    • 我想两者都用。因为我的目的是用给定的长度和宽度重新绘制图像。期待您的来信
    • 您不需要同时使用两者来获得您想要的尺寸。只需使用其中之一来设置正确的scaleXscaleY 值。然后根据需要调整heightwidth 值。
    • 感谢您耐心回答我的问题。我试着按照你的回答。这是正确的,但我的意思是我有 scaleX 和 scaleY 。将图像添加到画布后(使用 scaleToHeight ,这是正确的),但宽度会随着图像宽度溢出。我希望图像始终在给定的 scaleX 和 Y 中绘制,接受带有失真的图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    相关资源
    最近更新 更多