• 本地图片上传


    今天做的活动有需求是需要上传图片,我这边使用了vant的组件,然后在网上搜了下剪切压缩的部分逻辑,基本流程算是跑通了。

    其实之前只是知道<input tyle=file>这样子可以上传图片,其实这里是可以有好几个属性的

    懒得打字了,把我自己的demo贴出来当做笔记吧

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>file文件上传</title>
    </head>
    <body>
    <input class="ipt" type="file" accept="image/*" multiple>
    <!--
    这里面直接写笔记会比较好,
    input type=file时,其实还有四个属性,具体可以去mdn上看看(https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/file)
    1,accept 接受的文件类型
    2,files 就是上传了文件之后需要从这个属性里面去读取
    3,multiple 多选
    4,capture =>没用过,大概是可以控制哪个摄像头
    
    
    其实下面js里面有有些files里面的内容
    通过files里面的内容还不行
    
    还需要借助FileReader这个构造函数
    他有四种方法,分别用来返回不同类型的数据,比如base64啦,用的比较多的就是base64了。
    
    然后裁剪压缩的话,就是canvas了
    需要注意的是,一般压缩的话是借用了canvas.toDataURL(type,rate)
    需要两个参数,前面是类型,后面是压缩率,默认是0.92
    经过测试,发现type='image/jpeg'这样子是能够压缩的,其他的参数好像都不太行,我自己设置为0.7,压缩效果都是很好了。
    
    -->
    
    <script>
        var ipt= document.querySelector(".ipt");
        ipt.onchange=function (e){
            console.log(e);
            console.log(this);
            console.log(this.files);
            var img = document.createElement("img");
            img.src = window.URL.createObjectURL(this.files[0]);
            let file1=this.files[0];
            img.onload=function(){
                document.body.appendChild(img);
                var canvas=document.createElement('canvas');
                var ctx=canvas.getContext('2d');
                canvas.width=200;
                canvas.height=200/img.width*img.height;
    
                ctx.drawImage(img,0,0,200,200/img.width*img.height)
                let res = canvas.toDataURL('image/jpeg',0.1);
                // console.log(res);
                console.log(res.length);
            }
    
    
    
    
            var oFileReader=new FileReader();
            // oFileReader.readAsDataURL(file1);
            // oFileReader.readAsArrayBuffer(file1);
            oFileReader.readAsBinaryString(file1);
            // oFileReader.onload=function (e){
            //     console.log(e.target.result);
            // }
    
            oFileReader.onload=function (e){
                console.log(e);
                // console.log(e.target.result);
            }
    
    
        }
    </script>
    </body>
    </html>
  • 相关阅读:
    JS函数节流
    JS中多种方式创建对象
    javascript的几种继承
    多进程基本概念
    APUE(1)——UNIX基本概念
    pthread
    使用TortoiseGit,设置ssh方式连接git仓库。
    mac系统下用ssh方式连接git仓库
    webstorm2017.02版本如何使用material theme
    谷歌浏览器的字体问题
  • 原文地址:https://www.cnblogs.com/ysla/p/14045538.html
Copyright © 2020-2023  润新知