本地上传形式

<!DOCTYPE html><html lang="cn"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>客户端模仿</title>    <link href="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">    <style>    .bg-light {        background-color: #f8f9fa!important;    }        .pt-3 {        padding-top: 3rem!important;    }    .pb-3 {        padding-bottom: 3rem!important;    }    a {        text-decoration: none;    }    #canvas-dep {        margin-left: -15px;    }    #canvas-inf {        margin-left: -15px;    }    </style></head><body class="bg-light">    <canvas id="canvas-col" width="640" height="480"></canvas>    <canvas id="canvas-dep" width="640" height="480"></canvas>    <canvas id="canvas-inf" width="640" height="480"></canvas>    <div class="container">        <div class="pt-3 pb-3 text-center">            <h2>图片查看工具</h2>            <p class="lead">查看黑白、红外及深度原图</p>        </div>        <div class="row">                <div class="col-md-12 order-md-1">                  <h4 class="mb-3">申请参数</h4>                  <form class="needs-validation" novalidate="">                    <div class="row">                        <div class="col-md-4 mb-3">                            <label for="colfile">黑白</label>                            <input type="file" class="form-control" id="colfile" >                            <div class="invalid-feedback">                            Valid appKey is required.                            </div>                        </div>                                                 <div class="col-md-4 mb-3">                            <label for="depfile">深度图</label>                            <input type="file" class="form-control" id="depfile" >                            <div class="invalid-feedback">                            Valid appKey is required.                            </div>                        </div>                                                <div class="col-md-4 mb-3">                            <label for="inffile">红外图</label>                            <input type="file" class="form-control" id="inffile" >                            <div class="invalid-feedback">                            Valid appKey is required.                            </div>                        </div>                     </div>                                          <hr class="mb-4">                    <button class="btn btn-primary btn-lg btn-block" type="button"  onclick="test();">测试</button>                  </form>                </div>              </div>    </div>    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.3.1/jquery.min.js"></script>    <!-- <script src="https://cdn.bootcss.com/popper.js/1.14.7/umd/popper.min.js"></script> -->    <script src="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>    <script type="text/javascript">        const w = 640;        const h = 480;        const depThresholdValue = 4000;        const infThresholdValue = 1000;        function test() {            let colfile = $("#colfile");            if (colfile && colfile[0].files && colfile[0].files[0]) {                console.log(colfile[0].files)                let fileReader = new FileReader();                fileReader.onload = (event) => {                    var buffer = new Uint8Array(event.target.result);                    console.log(buffer)                    var ctx = document.getElementById("canvas-col").getContext('2d');                    var data = ctx.createImageData(w, h);                    for(var index = 0; index < w * h; index ++) {                        let i = index * 4;                        let bi = index * 3;                        data.data[i] = buffer[bi];                        data.data[i + 1] = buffer[bi + 1];                        data.data[i + 2] = buffer[bi + 2];                        data.data[i + 3] = 255;                    }                    ctx.putImageData(data, 0, 0);                    console.log('bye color');                }                fileReader.readAsArrayBuffer(colfile[0].files[0]);                          }            //             let depfiles = $("#depfile");            if (depfiles && depfiles[0].files && depfiles[0].files[0]) {                let fileReader = new FileReader();                fileReader.onload = (event) => {                    var buffer = new Uint8Array(event.target.result);                    var ctx = document.getElementById("canvas-dep").getContext('2d');                    var data = ctx.createImageData(w, h);                    for(var index = 0; index < w * h; index ++) {                        let i = index * 4;                        let pixel = Math.ceil((buffer[index*2 + 1] * 256 + buffer[index*2]) * 255 / depThresholdValue);                        if (pixel > 255) pixel = 255;                        data.data[i] = pixel;                        data.data[i + 1] = pixel;                        data.data[i + 2] = pixel;                        data.data[i + 3] = 255;                    }                    ctx.putImageData(data, 0, 0);                    console.log('bye dep');                }                fileReader.readAsArrayBuffer(depfiles[0].files[0]);                            }            let inffiles = $("#inffile");            if (inffiles && inffiles[0].files && inffiles[0].files[0]) {                let fileReader = new FileReader();                fileReader.onload = (event) => {                    var buffer = new Uint8Array(event.target.result);                    var ctx = document.getElementById("canvas-inf").getContext('2d');                    var data = ctx.createImageData(w, h);                    for(var index = 0; index < w * h; index ++) {                        let i = index * 4;                        let pixel = Math.ceil((buffer[index*2 + 1] * 256 + buffer[index*2]) * 255 / infThresholdValue);                        if (pixel > 255) pixel = 255;                        data.data[i] = pixel;                        data.data[i + 1] = pixel;                        data.data[i + 2] = pixel;                        data.data[i + 3] = 255;                    }                    ctx.putImageData(data, 0, 0);                      console.log('bye inf');                              }                fileReader.readAsArrayBuffer(inffiles[0].files[0]);            }                    }    </script></body></html>

ajax形式:

 <canvas id="canvas-col" width="640" height="480"></canvas>    <script>        const w = 640;        const h = 480;        const depThresholdValue = 4000;        const infThresholdValue = 1000;        var oReq = new XMLHttpRequest();        oReq.open("GET", "./3.raw", true);        oReq.responseType = "arraybuffer";        oReq.onload = function (oEvent) {        var arrayBuffer = oReq.response; // Note: not oReq.responseText        if (arrayBuffer) {        var buffer = new Uint8Array(arrayBuffer)[0];                    var ctx = document.getElementById("canvas-col").getContext('2d');                    var data = ctx.createImageData(w, h);                    for(var index = 0; index < w * h; index ++) {                        let i = index * 4;                        let bi = index * 3;                        data.data[i] = buffer[bi];                        data.data[i + 1] = buffer[bi + 1];                        data.data[i + 2] = buffer[bi + 2];                        data.data[i + 3] = 255;                    }                    ctx.putImageData(data, 0, 0);        // for (var i = 0; i < byteArray.byteLength; i++) {        // }        }        };        oReq.send(null);        </script>