PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > HTML5+CSS3教程 > 正文

    LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android

    作者:admin来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:localresizeimg-概述通常压缩图片需要上传到后端,由后端处理。但是如果要上传的图片很大,特别是手机当场拍摄下来的照片(约2M+),那样效...

    localresizeimg-概述

    • 通常压缩图片需要上传到后端,由后端处理。
    • 但是如果要上传的图片很大,特别是手机当场拍摄下来的照片(约2M+),那样效率会很低,用户也不会愿意等待。
    • 现在能够由前端本地压缩的话,效率将会极大的提升。

    这个玩意很强大的地方就在于他可以在HTML5 前端压缩 ,大大加快了上传速度,以及节约流量。

    直接上写好的demo了

    1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
    2. "http://www.w3.org/TR/html4/loose.dtd"> 
    3. <html> 
    4.  <head> 
    5.   <title> New Document </title> 
    6.   <meta name="Generator" content="EditPlus"> 
    7.   <meta name="Author" content=""> 
    8.   <meta name="Keywords" content=""> 
    9.   <meta name="Description" content=""> 
    10.   <script src="lrz.mobile.min.js"></script> 
    11.  </head> 
    12.  
    13.  <body> 
    14.   
    15.   <input type="file" capture="camera" /> 
    16.   <script> 
    17.     var input = document.querySelector('input'); 
    18.     input.onchange = function () { 
    19.         lrz(this.files[0], {width: 100}, function (results) { 
    20.           // 你需要的数据都在这里,可以以字符串的形式传送base64给服务端转存为图片。 
    21.           console.log(results);  
    22.  
    23.                           // 发送到后端 
    24.                 var xhr = new XMLHttpRequest(); 
    25.                 var data = { 
    26.                     base64: results.base64, 
    27.                     size: results.base64.length // 校验用,防止未完整接收www.bcty365.com 
    28.                 }; 
    29.                 xhr.open('POST', '1.php'); 
    30.                 xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8'); 
    31.                 xhr.onreadystatechange = function () { 
    32.                     if (xhr.readyState === 4 && xhr.status === 200) { 
    33.                         var result = JSON.parse(xhr.response); 
    34.                         result.error 
    35.                             alert('服务端错误,未能保存图片') 
    36.                             //: demo_report('服务端实存的图片', result.src, result.size); 
    37.                             : alert('上传OK'); 
    38.                     } 
    39.                 }; 
    40.                 xhr.send(JSON.stringify(data)); // 发送base64 
    41.         }); 
    42.     } 
    43.   </script> 
    44.  </body> 
    45. </html> 

    重要的是很多的人不知道这个工具是后端该如何处理,所以贴出php的代码:
     

    1. <?php 
    2. $base64=file_get_contents("php://input"); //获取输入流 
    3. $base64=json_decode($base64,1); 
    4. $data = $base64['base64']; 
    5. preg_match("/data:image\/(.*);base64,/",$data,$res); 
    6. $ext = $res[1]; 
    7. if(!in_array($ext,array("jpg","jpeg","png","gif"))){ 
    8.     echo json_encode(array("error"=>1));die
    9. $file=time().'.'.$ext
    10. $data = preg_replace("/data:image\/(.*);base64,/","",$data); 
    11. if (file_put_contents($file,base64_decode($data))===false) { 
    12.     echo json_encode(array("error"=>1)); 
    13. }else
    14.     echo json_encode(array("error"=>0)); 

    下载地址:

    https://github.com/think2011/localResizeIMG3/releases

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-142-2967-1.html
    相关热词搜索: LocalResizeIMG