zoukankan      html  css  js  c++  java
  • cropper手机使用实例

    cropper手机使用实例

    一、总结

    一句话总结:

    启示:还是要多个相关的实例交叉使用,相互印证,查漏补缺,可以更加高效和方便和节约时间

    二、Cropper.js从前台到后台的完整实例应用

    转自或参考:Cropper.js从前台到后台的完整实例应用
    https://blog.csdn.net/chenlkissmm/article/details/80787871

     

    先是html主体

    <html lang="zh-CN">
    <head>
    <link href="../../assets/plugins/bootstrap/css/bootstrap.min.css" rel="stylesheet">
    <link href="../../assets/plugins/sweetalert/sweetalert.css" rel="stylesheet">
    <link href="../../assets/plugins/cropper/cropper.min.css" rel="stylesheet">
    </head>
    <body>
    	<div id="main-wrapper">
    		<div class="page-wrapper">
    			<div class="container-fluid">
    				<div class="card">
    					<div class="row p-10">
    						<div class="col-md-8 p-b-10">
    							<div class="img-container">
    								<img id="image" src="${sessionScope.headimageurl}" alt="Picture">
    							</div>
    						</div>
    						<div class="col-md-4 docs-buttons">
    							<div class="docs-preview clearfix">
    								<div class="img-preview preview-lg"></div>
    								<div class="img-preview preview-md"></div>
    								<div class="img-preview preview-sm"></div>
    								<div class="img-preview preview-xs"></div>
    							</div>
    							<div class="btn-group">
    								<label class="btn btn-primary btn-upload" for="inputImage"> <input type="file"
    									class="sr-only" id="inputImage" name="file"
    									accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff"> <span
    										class="fa fa-upload"> 选择图片</span>							
    								</label>
    							</div>
    							<div class="btn-group btn-group-crop">
    								<button type="button" class="btn btn-success"
    									data-method="getCroppedCanvas"
    									data-option="{ "width": 520, "height": 520 }">
    									<span>
    									</span> <span class="fa fa-search"> 预览头像</span>
    								</button>
    							</div>
    							
    							<div class="modal fade docs-cropped" id="getCroppedCanvasModal"
    								aria-hidden="true" aria-labelledby="getCroppedCanvasTitle"
    								role="dialog" tabindex="-1">
    								<div class="modal-dialog">
    									<div class="modal-content">
    										<div class="modal-header">
    											<h5 class="modal-title" id="getCroppedCanvasTitle">您的头像</h5>
    											<button type="button" class="close" data-dismiss="modal"
    												aria-label="Close">
    												<span aria-hidden="true">×</span>
    											</button>
    										</div>
    										<div class="modal-body"></div>
    										<div class="modal-footer">
    											<button type="button" class="btn btn-secondary"
    												data-dismiss="modal">取消</button>
    											<button type="button" class="btn btn-info" id="download"
    												data-dismiss="modal" οnclick="submitForm()">保存头像</button>
    										</div>
    									</div>
    								</div>
    							</div>
    						</div>
    					</div>
    				</div>
    			</div>
    		</div>
    	</div>
    	<script src="../../assets/plugins/jquery/jquery.min.js"></script>
    	<script src="../../assets/plugins/bootstrap/js/popper.min.js"></script>
    	<script src="../../assets/plugins/bootstrap/js/bootstrap.min.js"></script>
    	<script src="../../assets/plugins/sweetalert/sweetalert.min.js"></script>
    	<script	src="../../assets/plugins/sweetalert/jquery.sweet-alert.custom.js"></script>
    	<script src="../../assets/plugins/cropper/cropper.js"></script>
    	<script src="../../assets/plugins/cropper/main.js"></script>
    	<script>
    		function submitForm() {
    			var cas = $('#image').cropper('getCroppedCanvas', {
    				width : 520,
    				height : 520
    			});// 获取被裁剪后的canvas  
    			var base64 = cas.toDataURL('image/jpeg'); // 转换为base64
    			var data = encodeURIComponent(base64);//作为URI编码
    			$.ajax({
    				url : ".uploadHeadImageServlet",
    				type : 'POST',
    				data : "file=" + data,
    				async : true,
    				success : function(data) {
    					sweetAlert({
    						title : "已保存 !",
    						text : "Your headimage file has been updated.",
    						type : "success"
    					}, function() {
    						window.location.href = "myprofile.jsp";
    					});
    				}
    			});
    		}
    	</script>
    
    </body>
    </html>

    ajax调用servlet

    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		//获取用户ID
    		HttpSession session = request.getSession();
    		String userid = (String) session.getAttribute("id");
    		//收到AJAX的data
    		String imagefile = request.getParameter("file");
    		//执行图片上传方法,并获得头像图片地址		
    		String path = uploadbiz.UploadHeadImage(userid, imagefile);		
    		//更新session中的头像地址	
    		session.setAttribute("headimageurl", path);		
    	}

    上传方法

    package sin.service;
    import java.io.FileOutputStream;
    import sin.dao.UserInfoDao;
    import sin.plugins.NewAFileName;
    import sun.misc.BASE64Decoder;
    @SuppressWarnings("restriction")
    public class UploadHeadImageBiz {
    	@SuppressWarnings("unused")
    	public String UploadHeadImage(String userid, String imagefile) {
    		NewAFileName newname = new NewAFileName();
    		UserInfoDao userinfodao = new UserInfoDao();
    		String path = null;		
            BASE64Decoder decoder = new BASE64Decoder();
            try {
            	//去掉头data:image/jpeg;base64,
            	String imagebasefile = imagefile.substring(23);
                // Base64解码
                byte[] bytes = decoder.decodeBuffer(imagebasefile);
                for (int i = 0; i < bytes.length; ++i) {
                    if (bytes[i] < 0) {// 调整异常数据
                        bytes[i] += 256;
                    }
                }
                //生成JPEG图片输出流,名字,保存路径            
                String filename = userid + newname.getFileName();            
                path = "../../../../sin/upload/headimages/" + filename;
                FileOutputStream out = new FileOutputStream(path);
                //更新用户头像URL
                Boolean result = userinfodao.updateUserHeadImageById(userid, path);
                out.write(bytes);
                out.flush();
                out.close();
                } catch (Exception e) {
                }
            return path;
        }
    }

    附手机上使用的效果图

     
  • 相关阅读:
    SharePreferences
    Android实现电话录音功能
    Android短信监听实现,及Android4.4之后短信机制变更
    java指纹识别+谷歌图片识别技术_源代码
    找出相似的图片--C#
    vim常用命令整理
    机器学习实战-logistic回归分类
    机器学习实战-朴素贝叶斯垃圾邮件分类
    机器学习实战-随机森林二分类问题
    分类算法
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/11965119.html
Copyright © 2011-2022 走看看