san*_*tes 5 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>
Run Code Online (Sandbox Code Playgroud)
我试图获取图像对象的初始状态属性,然后设置更改的图像对象的值.但它没有用.
任何解决这个问题的方法?
如果未明确设置.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';
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7795 次 |
最近记录: |