cropper动态裁剪图片(极简)

借助cropper插件可以很简单地实现客户端图片自定义裁剪,本文代码模拟的是最简单最基础的应用。

文件上传前的大小、类型限制可以参考:MVC中通过jquery实现图片预览、上传,并对文件类型、大小进行判断(极简)

裁剪后的内容如何上传至服务器,请参考:MVC中客户端向服务器端上传base64格式的图片

cropper插件下载链接(含v1.5.11版Cropper.js、Cropper.css,以及jquery.min.js):cropper插件下载

代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>cropper.js动态裁剪图片</title>
    <link href="Scripts/cropper.css" rel="stylesheet" />
    <script src="Scripts/cropper.js"></script>
    <script src="Scripts/jquery.min.js"></script>
    <script>
        $(function() {
            var CROPPER;
            //文件上传控件onchange事件,生成原图的预览以及Cropper对象
            $("#imgReader").change(function(e) {
                if(!this.files.length)return;   //如果未选择图片则退出函数
                //释放之前的Cropper资源——否则无法重新选择图片
                CropperDispose(); 
                //定义文件读取对象,并读取文件上传控件选择的文件。
                var reader=new FileReader();
                reader.readAsDataURL(this.files[0]);
                //文件对象的onload事件,上传文件载入后生成预览,并在预览图上生成Cropper对象
                reader.onload=function(e) {
                    $("#cropImg").attr("src",this.result);  //预览,this.result也可设置为e.target.result
                    //定义Cropper对象
                    //第一个参数一定不能写成$("#cropImg"),不要问怎么知道的,我满含泪水无语凝噎。
                    //第一个参数也可以写成document.getElementById("cropImg")
                    CROPPER=new Cropper($("#cropImg")[0],{//参数很多,可以百度
                        aspectRatio: 16/5,  //裁剪框宽高比例
                        autoCropArea: 1,    //初始裁剪框显示比例
                    }); 
                };
            });
            //裁剪图片按钮click事件,获得裁剪后图片的base64值,并通过img控件显示
            $("#btnCrop").click(function() {
                //获取裁剪框内内容的base64值
                //第一个参数设置生成文件的类型,可以查询http的content-type对照表
                //第二个参数为生成图片的压缩率
                let cropImg=CROPPER.getCroppedCanvas().toDataURL("image/jpeg",0.8);
                $("#cropResult").attr("src",cropImg);   //将base64通过img控件显示出来
            });
            //释放Cropper资源
            function CropperDispose() {
                if(CROPPER) {
                    CROPPER.destroy(); CROPPER=null;
                }
            }
        });
    </script>
    </head>
<body>
    <p><input type="file" id="imgReader" accept="image/*" /></p><!--文件上传控件-->
        <div style="width:300px;">
            <p><img src="" style="width:100%;" id="cropImg" /></p><!--图片预览容器-->
            <p><img src="" style="width:100%;" id="cropResult" /></p><!--裁剪后的图片容器-->
        </div>
        <p>
            <button id="btnCrop">裁剪图片</button><!--裁剪图片按钮-->
        </p>
</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值