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>
画像オブジェクトの初期状態のプロパティを取得してから、変更された画像オブジェクトの値を設定しようとしました。しかし、うまくいきませんでした。
この問題の解決策はありますか?