怎么用HTML5的canvas实现图片压缩


本篇内容主要讲解“怎么用HTML5的canvas实现图片压缩”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用HTML5的canvas实现图片压缩”吧!代码如下:
  

  
  
  
  
  
     
  
  
  
  名字:
  上传:
  
  
  
  varfile=document.querySelector(‘#fileimage’)
  varusername=document.querySelector(‘#username’)
  varcanvas=document.createElement(‘canvas’);
  varspan=document.createElement(‘span’)
  varformData=newFormData()
  file.addEventListener(‘change’,function(){
  //实现的原理的newformData()然后把这个formData用ajax传进去
  span.innerHTML=’预览图加载中…’
  document.body.appendChild(span)
  console.log(file.files[0])
  username.value?formData.append(‘username’,username.value):null;
  resize(file.files[0]);
  })
  //上传前的图片压缩
  functionresize(file){
  varreader=newFileReader()
  reader.readAsDataURL(file)
  varimg=newImage()
  reader.onload=function(e){
  //this.result就是图片的base64地址信息
  img.src=this.result;
  }
  varcontext=canvas.getContext(‘2d’);
  vargif=document.createElement(‘img’)
  //base64地址图片加载完毕后
  img.onload=function(){
  //图片原始尺寸
  //定义画布的大小
  if(img.width>300||img.height>300){
  if(img.width>img.height){
  canvas.width=300
  ca免费云主机域名nvas.height=img.height/img.width*300
  }
  else{
  canvas.height=300
  canvas.width=img.width/img.height*300
  }
  }
  //从那里开始截取图片
  context.drawImage(img,0,0,canvas.width,canvas.height)
  /*第一个参数是创建的img对象;第二个参数是左上角坐标,后面两个是画布区域宽高*/
  //压缩后的图片base64url
  /*canvas.toDataURL(mimeType,qualityArgument),mimeType默认值是’image/jpeg’;
  *qualityArgument表示导出的图片质量,只要导出为jpg和webp格式的时候此参数才有效果,默认值是0.92*/
  //varnewUrl=canvas.toDataURL(‘image/jpeg’,0.92);//base64格式
  document.body.removeChild(span)
  document.querySelector(‘body’).appendChild(canvas)
  };
  }
  //这是上传的
  document.querySelector(‘button’).addEventListener(‘click’,function(){
  canvas.toBlob(function(blob){
  varxhr=newXMLHttpRequest()
  formData.append(‘fileimage’,blob,’002.webp’)
  xhr.open(‘POST’,’test.php’,true)//默认true为异步
  //上传进度
  xhr.upload.addEventListener(‘progress’,function(e){
  console.log(‘上传进度为:’+(e.loaded/e.total*100).toFixed(2)+’%’)//多次出现
  //event.total是需要传输的总字节,event.loaded是已经传输的字节
  })
  xhr.upload.addEventListener(‘loadstart’,function(){
  console.log(‘上传开始’)//只出现一次
  })
  xhr.onreadystatechange=function(){
  if(xhr.readyState===4){
  if(xhr.status>=200&&xhr.status

  console.log(JSON.parse(xhr.responseText))//成功后的返回值
  }
  else{
  console.log(“Requestwasunsuccessful:”+xhr.status);
  }
  }
  }
  //xhr.setRequestHeader(“Content-type”,”multipart/form-data”);
  xhr.send(formData)
  },’image/webp’,0.9)
  })
  
  
  
  需要注意的是后端需要加上header(“Access-Control-Allow-Origin:*”);以实现跨域
到此,相信大家对“怎么用HTML5的canvas实现图片压缩”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: python如何查找列表中出现次数最多的数字

小编给大家分享一下python如何查找列表中出现次数最多的数字,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!以上是“python如何查找列表中出现次数最多的数字”这篇文章的所有内容,…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/16 10:33
下一篇 08/16 10:33

相关推荐