首页 > 编程 > PHP > 正文

如何用php处理多图上传压缩的功能

2020-03-22 18:13:52
字体:
来源:转载
供稿:网友
这篇文章主要介绍了php处理多图上传压缩代码功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

网上看了一些资料,关于处理图片压缩的,找到的大部分是单图压缩的,要么是单前端或者后端的,所以就自己整了下前后端压缩,并支持多图的html' target='_blank'>压缩图片实例。代码有点多,直接复制到编辑器看会比较清楚

1、先创建的一个简单的上传页面upload.php。先通过前端代码压缩图片,直接上代码

 !DOCTYPE html  html  head  meta charset= UTF-8  meta name= viewport content= width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui  title 实名验证 /title  script type= text/javascript  三个参数 file:一个是文件(类型是图片格式), w:一个是文件压缩的后宽度,宽度越小,字节越小 objp:一个是容器或者回调函数 photoCompress() function photoCompress(file,w,objp){ var ready=new FileReader(); /*开始读取指定的Blob对象或File对象中的内容. 当读取操作完成时,readyState属性的值会成为DONE,如果设置了onloadend事件处理程序,则调用之.同时,result属性中将包含一个data: URL格式的字符串以表示所读取文件的内容.*/ ready.readAsDataURL(file); ready.onload=function(){ var re=this.result; canvasDataURL(re,w,objp) function canvasDataURL(path, obj, callback){ var img = new Image(); img.src = path; img.onload = function(){ var that = this; // 默认按比例压缩 var w = that.width, h = that.height, scale = w / h; w = obj.width || w; h = obj.height || (w / scale); var quality = 0.7; // 默认图片质量为0.7 //生成canvas var canvas = document.createElement( canvas  var ctx = canvas.getContext( 2d  // 创建属性节点 var anw = document.createAttribute( width  anw.nodeValue = w; var anh = document.createAttribute( height  anh.nodeValue = h; canvas.setAttributeNode(anw); canvas.setAttributeNode(anh); ctx.drawImage(that, 0, 0, w, h); // 图像质量 if(obj.quality obj.quality = 1 obj.quality 0){ quality = obj.quality; // quality值越小,所绘制出的图像越模糊 var base64 = canvas.toDataURL( image/jpeg , quality); // 回调函数返回base64的值 callback(base64); * 将以base64的图片url数据转换为Blob * @param urlData * 用url方式表示的base64图片数据 function convertBase64UrlToBlob(urlData){ var arr = urlData.split( , ), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while(n--){ u8arr[n] = bstr.charCodeAt(n); return new Blob([u8arr], {type:mime}); var xhr; //上传文件方法 function uploadClick() { document.getElementsByClassName( uploadbtn )[0].value = 上传中...  document.getElementsByClassName( uploadbtn )[0].disabled=true;  var obj = document.getElementsByClassName( myfile  for(var i=0;i i++){ UploadFile(obj[i].files[0], file +i); function UploadFile(fileObj,filed){ var shopid = document.getElementById( shopid ).value; var adminid = document.getElementById( adminid ).value; var url = newshimingupload.php // 接收上传文件的后台地址  var form = new FormData(); // FormData 对象 if(fileObj.size/1024 100) { //大于100k,进行压缩上传 photoCompress(fileObj, { quality: 0.2 }, function(base64Codes){ //console.log( 压缩后: + base.length / 1024 + + base); var bl = convertBase64UrlToBlob(base64Codes); form.append( file , bl, file_ +Date.parse(new Date())+ .jpg // 文件对象 form.append( shopid , shopid); // 文件对象 form.append( adminid , adminid); // 文件对象 form.append( filed , filed); // 文件对象 xhr = new XMLHttpRequest(); // XMLHttpRequest 对象 xhr.open( post , url, false); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。 xhr.onload = uploadComplete; //请求完成 xhr.onerror = uploadFailed; //请求失败 // xhr.upload.onprogress = progressFunction;//【上传进度调用方法实现】 xhr.upload.onloadstart = function(){//上传开始执行方法 ot = new Date().getTime(); //设置上传开始时间 oloaded = 0;//设置上传开始时,以上传的文件大小为0 xhr.send(form); //开始上传,发送form数据 }else{ //小于等于1M 原图上传 form.append( file , fileObj); // 文件对象 form.append( shopid , shopid); // 文件对象 form.append( adminid , adminid); // 文件对象 form.append( filed , filed); // 文件对象 xhr = new XMLHttpRequest(); // XMLHttpRequest 对象 xhr.open( post , url, false); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。 xhr.onload = uploadComplete; //请求完成 xhr.onerror = uploadFailed; //请求失败 xhr.upload.onloadstart = function(){//上传开始执行方法 ot = new Date().getTime(); //设置上传开始时间 oloaded = 0;//设置上传开始时,以上传的文件大小为0 xhr.send(form); //开始上传,发送form数据 //上传成功响应 function uploadComplete(evt) { //服务断接收完文件返回的结果 var data = JSON.parse(evt.target.responseText); console.log(data); if(data.status){ alert(data.msg); if(data.msg == 门店照上传成功 ){ window.location.href = /dd_admin/index.php  //上传失败 function uploadFailed(evt) { alert( 网络不稳定,请重新上传!  /script  /head  body  style type= text/css  .main{text-align: center;padding-top: 50px;} .main .myfile{margin-bottom: 15px;} /style  p >

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP !

相关推荐:

PHP如何生成推广海报

用php实现文章置顶的功能

利用PHPEXCEL 导出数据和图片的代码

以上就是如何用php处理多图上传压缩的功能的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表