HTML5 canvas实现移动端上传头像拖拽裁剪效果

2020-04-20 17:04:56易采站长站整理

本示例使用HTML5 canvas,简单的编写了上传头像的裁剪效果,移动端支持拖拽后裁剪, 虽然样式不好看,但是功能还算全:

下图为裁剪后的效果:

html部分:

XML/HTML Code复制内容到剪贴板

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>上传头像</title>  
    <meta name="renderer" content="webkit">  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  
</head>  
<body>  
<div id="imgCrop" style="width:200px;height:200px;border:1px solid #ccc;overflow:hidden;">  
    <img src="img/test.jpg" alt="">  
</div>  
<input type="file" accept="image/*" />  
<button id="save">保存</button>  
<p>下面为剪切的图片:</p>  
<div id="imgShow"></div>  
</body>  
</html>  

JavaScript部分:

JavaScript Code复制内容到剪贴板

var $imgCrop = $("#imgCrop");   
var $img = $imgCrop.find("img");   
var img = $img[0];   
var width = parseInt($imgCrop.css("width"));   
var height = parseInt($imgCrop.css("height"));   
var startX,startY,scale = 1;   
var x = 0,y = 0;   
$("input").on("change",function(){   
    var fr = new FileReader();   
    var file = this.files[0]   
    //console.log(file);   
    if(!/image/w+/.test(file.type)){   
        alert(file.name + "不是图片文件!");   
        return;   
    }   
    console.log(file);   
    $img.removeAttr("height width");   
    fr.readAsDataURL(file);