ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 在FabricJS中,更改图像元素的src会更改该对象的所有属性

2019-06-20 19:23:11  阅读:789  来源: 互联网

标签:javascript canvas html5-canvas fabricjs


在Fabric.js画布中,我试图将图像对象的src替换为高分辨率图像,以便在使用canvas.toDataURLWithMultiplier时保持图像质量.

当我更改图像对象的src时,它的所有属性也会改变.图像对象自动缩放到不同的大小,并且所有状态属性都会更改.

这发生在0.9.15版本中.当我使用0.8.32版本时,它的工作原理.版本0.8.32没有此问题.

这是代码:

<body>
    <button id="click" onclick="changeImage()">Change Image</button>

    <canvas id="canvas" width="300px" height="300px" style="border:2px solid #000;">
<script>

    canvas = new fabric.Canvas('canvas');
    fabric.Image.fromURL("http://timeplusq.com/dakshin/clip03.png", function(obj) {

    canvas.add(obj.scale(1).rotate(-15).set({ 
        left: 80, top: 95 
    }));

    });

    function changeImage(){
     var tmp=canvas.item(0).getElement();
     var src = tmp.src;      

     tmp.setAttribute("src", 'http://timeplusq.com/dakshin/clip03original.png'); 

    //Its a 106KB size image

    canvas.renderAll();
    canvas.calcOffset();               
    }​

    </script>  
</body>

我试图获取图像对象的初始状态属性,然后设置更改的图像对象的值.但它没有用.

任何解决这个问题的方法?

解决方法:

如果没有明确设置.width和.height属性,它们将从图像加载它们的值,并且每次更改图像时都会这样做.

如果您随后显式设置了值,则在加载下一个图像时它们将保留这些值:

var img = new Image();

img.onload = function() {
    this.width = this.width;
    this.height = this.height;

    // subsequent image loads will be forced to this first image's size
    img.src = 'image2.jpg';
}

img.src = 'image1.jpg';

标签:javascript,canvas,html5-canvas,fabricjs
来源: https://codeday.me/bug/20190620/1247173.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有