使用Jcrop-canvas画布-制作前端图像裁剪

使用Jcrop-canvas画布-制作前端图像裁剪

写在前面
–公司有这个需求,安排调查
–目前各大网站都是采用的-前端做裁剪返回坐标-由后端来做到裁剪
–而使用html-canvas画布可以直接前端裁剪并返回base64流-ajax可以直接下载保存

上代码:
注意配置好依赖-有一张png图片依赖

<!DOCTYPE html>
<html lang="en">
      <head>
            <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
            <title></title>
            <link rel="stylesheet" href="css/jquery.Jcrop.min.css" />
            <script src="js/jquery.min.js" type="text/javascript"></script>
            <script src="js/jquery.Jcrop.min.js" type="text/javascript" charset="utf-8"></script>
            <script>
                  $(function() {
                        var imgUrl;

                        $('input[type=file]').change(function() {
                              var file = this.files[0];
                              var reader = new FileReader();
                              reader.onload = function() {
                                    // 通过 reader.result 来访问生成的 DataURL
                                    var url = reader.result;
                                    setImageURL(url);
                              };
                              reader.readAsDataURL(file);
                        });

                        var image = new Image();

                        function setImageURL(url) {
                              image.src = url;
                              image.id = "target";
                              $("#img").append(image);

                              var cut = document.getElementById("cut");
                              var ctx = cut.getContext("2d");

                              image.onload = function() {

                                    $('#target').Jcrop({
                                          setSelect:[0, 0, 400, 400],
                                          maxSize: [400, 400],
                                          minSize: [400, 400],
                                          onChange: updatePreview,
                                          onSelect: updatePreview,
                                          aspectRatio: 1
                                    });
                                    //裁剪过程中,每改变裁剪大小执行该函数
                                    function updatePreview(c) {
                                          if(parseInt(c.w) > 0) {
                                                ctx.drawImage(image, c.x, c.y, c.w, c.h, 0, 0, 400, 400);
                                                imgUrl = cut.toDataURL("image/png");   
                                                //.replace("image/png", "image/octet-stream")
                                                console.log(c.x, c.y, c.w, c.h);
                                          }
                                    };
                              }
                        }

                        $("#submit").click(function(){
//                            console.log(imgUrl);
                              $.post("#",{img:imgUrl},function(result){
                              alert("OK");
                              });

                              window.location.href = imgUrl;
                        })
                  })
            </script>
      </head>
      <body>
            <canvas id="cut" width="400" height="400"></canvas>
            <input type="file" />
            <div id="img"></div>
            <input type="button" id="submit" value="submit"/>
      </body>
</html>
代码不是很长-基本已经做到最精简
posted @ 2017-05-11 23:24 eat.u 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值