>  기사  >  웹 프론트엔드  >  js에서 이미지 업로드 및 압축 기능을 구현하는 방법(상세 튜토리얼)

js에서 이미지 업로드 및 압축 기능을 구현하는 방법(상세 튜토리얼)

亚连
亚连원래의
2018-06-12 16:36:032702검색

이 글에서는 주로 이미지를 업로드하고 압축하는 관련 코드를 소개합니다. 관심 있는 친구들이 참고할 수 있습니다.

이 글의 예는 이미지를 업로드하고 압축하는 js의 구체적인 내용을 공유합니다. 코드는 참고용입니다. 구체적인 내용은 다음과 같습니다

코드:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title></title>
  <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
 </head>
 <body>
  <input type="file" id="picFile" onchange="readFile(this)"/> 
  <img style="" id="img" src="" alt="" />
  <script>
  function readFile(obj){ 
   var file = obj.files[0];  
   //判断类型是不是图片 
    if(!/image\/\w+/.test(file.type)){ 
      alert("请确保文件为图像类型"); 
      return false; 
    } 
    var reader = new FileReader(); 
    reader.readAsDataURL(file); 
    reader.onload = function(e){
     dealImage(this.result,{width:200},function(base){
         document.getElementById(&#39;img&#39;).setAttribute(&#39;src&#39;,base)
     });
    } 
  } 
 
  /**
   * 图片压缩,默认同比例压缩
   * @param {Object} path
   * pc端传入的路径可以为相对路径,但是在移动端上必须传入的路径是照相图片储存的绝对路径
   * @param {Object} obj
   * obj 对象 有 width, height, quality(0-1)
   * @param {Object} callback
   * 回调函数有一个参数,base64的字符串数据
   */
  function dealImage(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(&#39;canvas&#39;);
   var ctx = canvas.getContext(&#39;2d&#39;);
   // 创建属性节点
   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(&#39;image/jpeg&#39;, quality );
   // 回调函数返回base64的值
   callback(base64);
   }
  }
  </script>
 </body>
</html>

위 내용은 앞으로 모든 분들께 도움이 되기를 바랍니다.

관련 기사:

element-ui를 구축하는 방법(자세한 튜토리얼)

Vue2 템플릿에서 템플릿을 사용하는 방법

Vue에서 구성 요소를 만드는 방법

Vue에서 Eslint를 사용하는 방법- cli 자동 서식 구현

ES6에서 하위 구성 요소는 상위 구성 요소 사용 방법을 호출합니다

Angular에서 동적 양식을 만드는 방법

Angularjs에서 $http를 사용하여 Excel 파일의 비동기 업로드 구현

vuejs가 데이터 중심 뷰의 원칙을 구현하는 방법

위 내용은 js에서 이미지 업로드 및 압축 기능을 구현하는 방법(상세 튜토리얼)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.