0
キャンバスイメージにズームプラグインを作成しようとしています[私は自分でそれをやっていると思っています。キャンバスイメージの上にマウスを置くと、元のイメージの特定の部分が元のイメージの下に置かれた別のキャンバスにコピーされます。私はctxZoom.scale(2, 2);
を試しましたが、コピーされた画像はズームされていません。実際の画像上でマウスを動かすと、元の画像の下にズームされた画像が表示されます。どこが間違っていたのか?キャンバスイメージにズームプラグインを作成しようとしています
HTML
<div id="imageContainer">
<div class="active">
<canvas id="canvas"></canvas>
<canvas id="canvasZoom"></canvas>
</div>
</div>
JS
$(document).ready(function() {
var canvasZoom = document.getElementById('canvasZoom');
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var img = new Image();
loadImage = function(src) {
img.crossOrigin = '';
img.src = src;
img.onload = function() {
canvas.width = img.width;
canvas.height = img.height;
ctx.restore();
ctx.drawImage(img, 0, 0, img.width, img.height);
}
}
loadImage("http://www.foreignstudents.com/sites/default/files/webfm/car_0.jpg");
function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect();
return {
x: evt.clientX - rect.left,
y: evt.clientY - rect.top
};
}
canvas.addEventListener('mousemove', function(e) {
$("#canvasZoom").show();
$('#canvasZoomm').css({
left: e.pageX - 150,
top: e.pageY
});
var mousePos = getMousePos(canvas, e);
console.log('Mouse position: ' + mousePos.x + ',' + mousePos.y)
//grab the context from your destination canvas
var ctxZoom = canvasZoom.getContext('2d');
ctxZoom.scale(2, 2);//Not Working
ctxZoom.putImageData(ctx.getImageData(mousePos.x - 150, mousePos.y - 60, 500, 500), 0, 0);
ctxZoom.scale(2, 2);//Not Working
ctx.restore();
});
canvas.addEventListener('mouseout', function(e) {
//$("#canvasZoom").hide('slow');
});
});
base64の画像データをctx.drawImage(base64Data、0、0、width、height);のようにdrawImage()に渡すことはできますか。ズームを行う前に、明るさ、コントラストなどを適用し、画像の一部をマスクすることさえできます。だから、私がズームのために "img"を使うならば、以前のすべての変更はズームされた画像の右には見えません。 – Nofi
drawImage()用ではありません。ただし、イメージ要素自体(src)のソースとしてData-URLを指定できます。私は、調整を行うためにオフスクリーンのキャンバスを使用することをお勧めします、そして、それをディスプレイにズームするためのソースとして使用してください。 – K3N