• 图片上传、转换等问题总结


            在项目开发中,不免会遇到图片上传的问题,除了用一些框架自带的方法,我们是需要了解原生JS怎么完成图片的上传与转换的。

            一、图片转换成base64的各种场景

             

     1 本地图片:
     2 <input type="file" id="image"><br/>
     3 
     4     var reader = new FileReader();
     5          var AllowImgFileSize = 2100000; // 上传图片最大值(单位字节)(2m)
     6          var file = $("#image")[0].files[0];
     7          var imgUrlBase64;
     8          if (file) {
     9              // 将文件以Data URL形式读入页面
    10              imgUrlBase64 = reader.readAsDataURL(file);
    11              reader.onload = function (e) {
    12                  // var ImFileSize = reader.result.substring(reader.result.indexOf(",") + 1).length; //截取base64码部分(可选可不选,需要与后台沟通)
    13                  if (AllowImgFileSize != 0 && AllowImgFileSize < reader.result.length) {
    14                      alert('上传失败,请上传不大于2M的图片');
    15                      return;
    16                  }else{
    17                      // 执行上传操作
    18                      alert(reader.result);
    19                  }
    20              }
    21          }
    22 
    23 
    24 项目中的图片,本地相对路径的图片
    25 
    26 function(){
    27     var url = "static/img/js1.jpg"; // 这是站内的一张图片资源,采用相对路径
    28     convertImgToBase64(url, function(base64Img) {
    29         //转化后的base64
    30         alert(base64Img)
    31     })
    32 }
    33 
    34 // 实现将项目的图片转化成base64
    35 
    36 function convertImgToBase64(url, callback, outputFormat){
    37     var canvas = document.createElement('CANVAS'),
    38         ctx = canvas.getContext('2d'),
    39         img = new Image;
    40         img.crossOrigin = 'Anonymous';
    41         img.onload = function(){
    42             canvas.height = img.height;
    43             canvas.width = img.width;
    44             ctx.drawImage(img,0,0);
    45             var dataURL = canvas.toDataURL(outputFormat || 'image/png');
    46             canvas = null;
    47         }
    48         img.src = url;
    49 }
    50 
    51 网络图片资源转化为base64
    52 function() {
    53     //这是网上的一张图片链接
    54     var url="http://pl.pstatp.com/large/435d000085555bd8de10";
    55     getBase64(url)
    56         .then(function(base64){
    57             console.log(base64); //处理成功打印在控制台
    58         }), function(err) {
    59         console.log(err); // 打印异常信息
    60     });
    61 }
    62 
    63 //传入图片路劲,返回base64
    64 function getBase64(img){
    65     function getBase64Image(img,width,height) { //width、height调用时传入具体像素值,控制大小,不传则默认图像大小
    66         var canvas = document.createElement("canvas");
    67         canvas.width = width ?  img.width;
    68         canvas.height = height ? height : img.height;
    69 
    70         var ctx = canvas.getContext("2d");
    71         ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
    72         var dataURL = canvas.toDataURL();
    73         return dataURL;
    74     }
    75     var image = new Image();
    76     image.crossOrigin = '';
    77     image.src = img;
    78     var deferred = $.Deferred();
    79     if(img){
    80         image.onload = function(){
    81             deferred.resolve(getBase64Image(image)); //将base64传给done上传处理
    82         }
    83         return deferred.promise(); // 问题要让onload完成后再return sessionStorage['imgTest]
    84     }
    85 }

                  

  • 相关阅读:
    gradle 使用本地maven 仓库 和 提交代码到maven
    eclipse 快捷键
    eclipse gradle 找不到依赖解决办法
    java web 简单的权限管理
    spring 配置properties 编码
    html 一些坑。。。
    js 的 一些操作。。。
    maven 过滤webapp下的文件
    django 模型
    vue系列之webstrom的设置
  • 原文地址:https://www.cnblogs.com/leyan/p/8945320.html
Copyright © 2020-2023  润新知