【问题标题】:Auto adjust image in canvas, If image resolution is larger than canvas size in Html5自动调整画布中的图像,如果图像分辨率大于 Html5 中的画布大小
【发布时间】:2016-04-16 16:36:17
【问题描述】:

我正在使用 Html5、fabric.js 和 Java 脚本。我在画布中上传多个图像,但有时上传的图像比画布大。我希望图像设置为固定大小。

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: 50, top: 100, angle: 00}).scale(0.9);
      canvas.add(oImg).renderAll();
      var a = canvas.setActiveObject(oImg);
      var dataURL = canvas.toDataURL({format: 'png', quality: 0.8});
      console.log("aaaaaaaaaaa" + dataURL);

      //                        console.log("Canvas Image " + dataURL);
      //                        document.getElementById('txt').href = dataURL;

    });
  };
  reader.readAsDataURL(file);
});
document.querySelector('#txt').onclick = function (e) {
  e.preventDefault();
  canvas.deactivateAll().renderAll();
  document.querySelector('#preview').src = canvas.toDataURL();
}
canvas{
  border: 1px solid black;
}
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.min.js"></script>
<input type="file" id="file">
<canvas id="canvas" width="750" height="550"></canvas>
<a href='' id='txt' target="_blank">Click Me!!</a>
<br />
<img id="preview" />

上传前:

上传后:

我希望每张图片都固定大小。上传图片后,用户可以更改大小、角度等属性。

【问题讨论】:

    标签: javascript css html canvas fabricjs


    【解决方案1】:

    在您的代码中添加特定尺寸的高度和宽度,如下所示。

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

    【讨论】:

      【解决方案2】:

      如果我对问题的理解正确,您可以通过将这些参数(widthheight)传递给函数 img.set,将图像调整为您想要的大小。

      img.set({... width:100, height:100});
      

      完整代码:

      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: 50, top: 100, 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});
            console.log("aaaaaaaaaaa" + dataURL);
      
            //                        console.log("Canvas Image " + dataURL);
            //                        document.getElementById('txt').href = dataURL;
      
          });
        };
        reader.readAsDataURL(file);
      });
      document.querySelector('#txt').onclick = function (e) {
        e.preventDefault();
        canvas.deactivateAll().renderAll();
        document.querySelector('#preview').src = canvas.toDataURL();
      }
      canvas{
        border: 1px solid black;
      }
      <script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.min.js"></script>
      <input type="file" id="file">
      <canvas id="canvas" width="750" height="550"></canvas>
      <a href='' id='txt' target="_blank">Click Me!!</a>
      <br />
      <img id="preview" />

      【讨论】:

      • 令人兴奋。你是天才……再次感谢。
      • 如果你不介意的话。我想问一个问题?如何在此图像上编写自定义文本。
      • 当然。如果是关于这个问题。如果没有,请提出一个新问题并将她的链接粘贴到这里,我会看到的。一个新问题将对其他有类似问题的人有所帮助。
      • 好的。但我不知道自定义文本。但我会尝试提出新问题。
      猜你喜欢
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 2017-04-29
      • 2011-01-19
      • 2014-01-07
      • 1970-01-01
      • 2012-08-17
      相关资源
      最近更新 更多