cropper.js实现图片裁剪预览并转换为base64发送至服务端。

一 、准备工作

1.首先需要先下载cropper,常规使用npm,进入项目路径后执行以下命令:

npm install cropper

2. cropper基于jquery,在此不要忘记引入jq,同时记得引入cropper.css

3. 此处后端使用的nodejs,不过不懂node的影响也不大。

二 、 图片裁剪并预览

1.首先利用cropper完成图片裁剪并预览:

    <input type="file" name="" id="imgBtn" name="imgCut">
    <!-- 预览容器-->
    <div class="box">
        <img src="" id="preview">
    </div>
    <!-- 点击上传按钮裁剪-->
    <input type="button" name="" value="上传" onclick="imgSubmit()">        
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="../js/cropper.min.js"></script><script>
        //生成裁剪区域
    $("#imgBtn").change(function(e){
        var file = $("#imgBtn").get(0).files[0];
        var reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload=function(e){
            alert(‘文件读取完成‘);
            $("#preview").attr("src",e.target.result)
            var $img = $("#preview");
            $(‘.box > img‘).cropper({
                aspectRatio: 16 / 9,
                crop: function(data) {
                }
            });
        }

    })
        //预览裁剪后的图片
    function imgSubmit(){
        var result= $(‘.box > img‘).cropper("getCroppedCanvas");
        document.body.appendChild(result);
    }    </script>

裁剪并预览的完整代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" type="text/css" href="../css/cropper.min.css">
    <style type="text/css">
        .box{
            width: 600px;
            height: 600px;
            border:5px solid #555fff;
            border-radius: 10px;
        }
    </style>
</head>
<body>
<input type="file" name="" id="imgBtn" name="imgCut">
<!-- 预览容器-->
<div class="box">
    <img src="" id="preview">
</div>
<!-- 点击上传按钮裁剪-->
<input type="button" name="" value="上传" onclick="imgSubmit()">
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="../js/cropper.min.js"></script>
<script>
    //生成裁剪区域
    $("#imgBtn").change(function(e){
        var file = $("#imgBtn").get(0).files[0];
        var reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload=function(e){
            alert(‘文件读取完成‘);
            $("#preview").attr("src",e.target.result)
            var $img = $("#preview");
            $(‘.box > img‘).cropper({
                aspectRatio: 16 / 9,
                crop: function(data) {
                }
            });
        }

    })
    //预览裁剪后的图片
    function imgSubmit(){
        var result= $(‘.box > img‘).cropper("getCroppedCanvas");
        document.body.appendChild(result);
    }
</script>

</body>
</html>

三、图片裁剪预览后以base64发送至服务端

此处后端使用nodejs,没有基础的可以看我之前的nodejs文章。

前端页面如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" type="text/css" href="../css/cropper.min.css">
    <style type="text/css">
        .box{
            width: 600px;
            height: 600px;
            border:5px solid #555fff;
            border-radius: 10px;
        }
    </style>
</head>
<body>
<form>
    <input type="file" name="" id="imgBtn" name="imgCut">
    <div class="box">
        <img src="" id="previewyulan">
    </div>
    <input type="button" name="" value="上传" onclick="imgSubmit()">
</form>

    <script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
    <script type="text/javascript" src="../js/cropper.min.js"></script>
    <script type="text/javascript">
    $("#imgBtn").change(function(e){
        var file = $("#imgBtn").get(0).files[0];
        var reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload=function(e){
            alert(‘文件读取完成‘);
            $("#previewyulan").attr("src",e.target.result)
            var $img = $("#preview");
            $(‘.box > img‘).cropper({
                aspectRatio: 16 / 9,
                crop: function(data) {
                    //转换为base64
                    // var $imgData=$img.cropper(‘getCroppedCanvas‘)
                   //   var dataurl = $imgData.toDataURL(‘image/png‘);
                    //  $("#previewyulan").attr("src",dataurl)
                }
            });
        }

    })

    function imgSubmit(){
        //获取裁剪后的canvas对象
        var result= $(‘.box > img‘).cropper("getCroppedCanvas");
        //将canvas对象转换为base64
        var dataurl =result.toDataURL(‘image/png‘);
        document.body.appendChild(result);
        //发起post请求
        var data = "img="+dataurl+"";
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function(event){
            if(xhr.readyState == 4){    //4:解析完毕
                if(xhr.status == 200){    //200:正常返回
                    console.log(xhr)
                }
            }
        };
        xhr.open(‘POST‘,‘imgCut‘,true);    //true为异步
        xhr.setRequestHeader(‘Content-type‘,‘application/x-www-form-urlencoded‘);
        xhr.send(data);
    }

    </script>
</body>
</html>

路由拦截:

app.post("/html/imgCut",function(req,res){
    console.log(req.body.img);
    //此处省略详细的后端逻辑代码
    res.send();
})

有需要可以留言。

时间: 2024-09-30 02:11:42

cropper.js实现图片裁剪预览并转换为base64发送至服务端。的相关文章

Java实现图片裁剪预览功能

Java实现图片裁剪预览功能 在项目中,我们需要做些类似头像上传,图片裁剪的功能,ok看下面文章! 需要插件:jQuery Jcrop 后端代码: package org.csg.upload; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import 

使用JCrop进行图片裁剪,裁剪js说明,裁剪预览,裁剪上传,裁剪设计的图片处理的工具类和代码

?? 1.要想制作图片裁剪功能,可以使用网上的裁剪工具JCrop,网址是:https://github.com/tapmodo/Jcrop/ 案例效果如下: 2.引入JCrop的js代码,具体要引入那些js可以参考JCrop案例: 3.编写的html代码如下: <div id="light" class="white_content"> <div class="vatitlee"> 封面截取 <div class=&

pdf.js实现图片在线预览

项目需求 前段时间项目中遇到了一个模块,是关于在线预览word文档(PDF文件)的,所以,找了很多插件,例如,pdf.js,pdfobject.js框架,但是pdfobject.js框架对于IE浏览器不兼容,所以,选择了使用pdf.js,这里记录一下,以后使用的时候好查找,也希望可以帮助有需要的人. word文件转pdf文件 首先需要将指定的word文档转为pdf文件,方法有很多,这里不介绍,有需要的童鞋可以去网上下载即可.我这里用的是OpenOffice,版本是4.1.6,使用很简单,下载好了

jQuery Lightbox图片放大预览

简介:jQuery Lightbox图片放大预览代码是一款可以在用户点击页面中的小图片时,将该图片的高清版本以Lightbox的方式放大显示在页面的中间,提高用户的体验度. 效果展示 http://hovertree.com/texiao/jqimg/6/ 效果图如下: 源码下载:http://hovertree.com/h/bjaf/hdhgnftp.htm HTML文件代码: <!DOCTYPE html> <html lang="zh"> <head

巧用weui.gallery(),点击图片后预览图片

要在页面需要加载的JS文件: <script src="../js/libs/weui.min.js"></script> 可以去weui的文档中下载,这是它的demo:   https://weui.io/weui.js/ 要先给图片创建一个节点: var imgDom = $("<img class='weui-jiaj-img' />"); 因为接口中取到的图片会是很多,因此,在循环图片数据的时候,要给每个图片添加一个动态的

单张图片在线预览+图片压缩

该方法未测试浏览器兼容性,仅在谷歌上进行过测试. 图片在线预览:一般思路是通过获取file上的绝对路径并将路径赋值给src实现在线预览功能,但现实中的浏览器,尤其是高版本浏览器由于用户安全性考虑,不会让开发者通过file获取到绝对路径,因此使用H5中的画板功能,将图片进行重绘后,得到base64编码的dataURL,再将这个地址赋值给src实现在线预览功能. 图片压缩原理:将大图根据预定尺寸进行尺寸修改. <!DOCTYPE html> <html lang="en"

微信小程序点击图片放大预览

微信小程序点击图片放大预览使用到 wx.previewImage 接口,可以放大.上/下一张 上代码 wxml代码 <view class='content-img' wx:if="{{images}}" > <view wx:for="{{images}}"> <image src="{{item}}" data-src="{{item}}" bindtap="previewImage

android GridView显示相同尺寸图片以及预览功能

项目描述: GridView加载图片,在程序中控制各个图片尺寸一致,点击图片进行预览,可以滑动切换查看不同的界面,可以手势控制图片缩放,效果图如下: 1.GridView控制每个控件大小一致 GridView中的控件大小在程序中控制,思路就是获取屏幕宽高,减去控件之间的空隙,除以每一行控件的个数,就是控件的宽,可以将控件的高设置与宽一致. 首先获取屏幕宽高 public static int screenWidth;//屏幕宽度 WindowManager windowManager = get

iOS HTML图片本地预览

1.引言 相信用过苹果手机的童鞋,会发现很多新闻类的应用,都可以实现HTML图片本地预览,那么这是如何实现的呢?本文将深入阐述其中的原理. 关于此功能,我还实现了一个DEMO,大家可以点击此访问更详细内容 2.原理 接触过web开发的人,就了解与html元素交互都是通过javascript进行的,比如点击.滑动等,比如点击标签的响应代码如下 var img = document.getElementById('test'); img.onclick = function() { do some