1. 程式人生 > >canvas控制圖片縮放

canvas控制圖片縮放

例子:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<meta name="format-detection" content="telephone=no, email=no, adress=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-touch-fullscreen" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
</head>
<body>
<canvas id="canvas" style="border:1px solid blue;">
    您的瀏覽器不支援canvas
</canvas></br>
<input type="range" id="slider" value="1" max="3" min="0.5" step="0.01" style="width:598px;" />
<script>
    var canvas = document.getElementById("canvas");
    var context = canvas.getContext("2d");
    var image = new Image();
    var slider = document.getElementById("slider");

    window.onload = function() {
        canvas.width = 598;
        canvas.height = 397;
        image.src = "picture_01.jpg";
        image.onload = function(){
            drawImageByScale();
            slider.onmousemove = function(){
                var scale = slider.value;
                drawImageByScale(scale);
            };
        }
    };

    function drawImageByScale(scale){
        var scale = scale || 1;
        var imageWidth = 598 * scale;
        var imageHeight = 397 * scale;
        var dx = (canvas.width - imageWidth)/2;
        var dy = (canvas.height - imageHeight)/2;
        context.clearRect(0,0,canvas.width,canvas.height);
        context.drawImage(image,dx,dy,imageWidth,imageHeight);
    }
</script>
</body>
</html>

drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh);

引數分別表示:圖片物件,從圖片的X軸處,從圖片的Y軸處,裁剪的寬度,裁剪的高度,從canvas的X軸處,從canvas的Y軸處,繪製的寬度,繪製的高度

如果省略第2-5個引數,預設不裁剪,按照圖片實際大小繪製

注意:drawImage()函式務必寫在image.onload = function(){}中