• js


    file和base64

    1.file文件转换为base64,得到base64格式图片

    var reader = new FileReader();
    reader.readAsDataURL(this.files[0]);
    reader.onload = function(){
        console.log(reader.result); //获取到base64格式图片
    };
    

    2.base64转换为file

    function dataURLtoFile(dataurl, filename) {//将base64转换为文件
      var arr = dataurl.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 File([u8arr], filename, {type:mime});
    }    
    

    测试案例:

    <input type="file" name="" id="imgfile">
    <script>
      var base64Img = '';
      document.getElementById('imgfile').onchange = function(){
          var fileReader = new FileReader();
          fileReader.readAsDataURL(this.files[0]);
          fileReader.onload = function(){
              base64Img = fileReader.result;
              console.log(dataURLtoFile(base64Img,'img11'))
          }
      }
       function dataURLtoFile(dataurl, filename) {//将base64转换为文件
          var arr = dataurl.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 File([u8arr], filename, {type:mime});
      }    
    </script>
    

    blob和base64

    3.base64转换为blob流

    function dataURItoBlob(base64Data) {
        //console.log(base64Data);//data:image/png;base64,
        var byteString;
        if(base64Data.split(',')[0].indexOf('base64') >= 0)
            byteString = atob(base64Data.split(',')[1]);//base64 解码
        else{
            byteString = unescape(base64Data.split(',')[1]);
        }
        var mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0];//mime类型 -- image/png
    
        // var arrayBuffer = new ArrayBuffer(byteString.length); //创建缓冲数组
        // var ia = new Uint8Array(arrayBuffer);//创建视图
        var ia = new Uint8Array(byteString.length);//创建视图
        for(var i = 0; i < byteString.length; i++) {
            ia[i] = byteString.charCodeAt(i);
        }
        var blob = new Blob([ia], {
            type: mimeString
        });
        return blob;
    }  
    

    4.blob流转换为base64

    function blobToDataURI(blob, callback) {
       var reader = new FileReader();
       reader.readAsDataURL(blob);
       reader.onload = function (e) {
           callback(e.target.result);
       }
    }
    

    测试案例,可直接复制运行

    <input type="file" id="imgfile">
    <img src="" id="img" alt=""> //这里图片总是转义,暂且这么写,知道是img就行
    <img src="" id="img2" alt="">
    <script>
     document.getElementById('imgfile').onchange = function(){
         reads(this.files[0],function(base64Data){   //获取图片的base64格式,显示
             document.getElementById("img").src= reader.result;
             var blob = dataURItoBlob(reader.result); //转换为blob格式
             blobToDataURI(blob,function(result){    //blob格式再转换为base64格式
                 document.getElementById('img2').src = result;
             })
         });
     }
     function reads(_file,callback){
         var reader = new FileReader();
         reader.readAsDataURL(_file);
         reader.onload = function(){
             callback(reader.result);
         };
     }
     function dataURItoBlob(base64Data) {
         //console.log(base64Data);//data:image/png;base64,
         var byteString;
         if(base64Data.split(',')[0].indexOf('base64') >= 0)
             byteString = atob(base64Data.split(',')[1]);//base64 解码
         else{
             byteString = unescape(base64Data.split(',')[1]);
         }
         var mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0];//mime类型 -- image/png
    
         // var arrayBuffer = new ArrayBuffer(byteString.length); //创建缓冲数组
         // var ia = new Uint8Array(arrayBuffer);//创建视图
         var ia = new Uint8Array(byteString.length);//创建视图
         for(var i = 0; i < byteString.length; i++) {
             ia[i] = byteString.charCodeAt(i);
         }
         var blob = new Blob([ia], {
             type: mimeString
         });
         return blob;
     }  
    
     function blobToDataURI(blob, callback) {
         var reader = new FileReader();
         reader.readAsDataURL(blob);
         reader.onload = function (e) {
             callback(e.target.result);
         }
     }
    </script>
    
  • 相关阅读:
    通过IDEA解决spring配置文件
    idea中xml打开方式变成file,改回来
    idea 搜索不到前端的ajax controller接口的原因
    IDEA 出现 updating indices 卡进度条问题的解决方案并加快索引速度
    java 循环中使用list时,出现list中全部加入了对象导致没有实现分组的解决方案
    java 从字符串中 以单个或多个空格进行分隔 提取字符串
    idea ssm项目出现日志中文乱码,封装的json中的msg字段中文乱码(但是json封装的bean中的字段不乱码)等其他各种项目下的中文乱码解决方案
    javaweb 解决jsp中${}传递中文值到后端以及get请求中文乱码的问题
    idea 开发javaee 时,出现访问的文件和源文件不一样,没有正常更新的解决方案
    java 迭代器只遍历了一次的解决方案
  • 原文地址:https://www.cnblogs.com/ajaemp/p/12327571.html
Copyright © 2020-2023  润新知