zoukankan      html  css  js  c++  java
  • 利用canvas 压缩图片,传递到 服务器

    1.取到file文件。

    2.将图片压缩

                function processfile(file) {
                                var reader = new FileReader();
                                reader.onload = function (event) {
                                    var blob = new Blob([event.target.result]);
                                    window.URL = window.URL || window.webkitURL;
                                    var blobURL = window.URL.createObjectURL(blob);
                                    var image = new Image();
                                    image.src = blobURL;
                                    image.onload = function() {
                                        var dataUrl= canvasImg(image);//利用画布将文件转换为 返回的是一串Base64编码的URL
                                        uploadFile(resized);//删除服务器
                                    }
                                };
                                reader.readAsArrayBuffer(file);
                            }
                            function canvasImg(img) {
                                //压缩的大小
                                var max_width =500;
                                var max_height =500;
                                var canvas = document.createElement('canvas');
                                var width = img.width;
                                var height = img.height;
                                if(width > height) {
                                    if(width > max_width) {
                                        height = Math.round(height *= max_width / width);
                                        width = max_width;
                                    }
                                }
                                else{
                                    if(height > max_height) {
                                        width = Math.round(width *= max_height / height);
                                        height = max_height;
                                    }
                                }
                                canvas.width = width;
                                canvas.height = height;
                                var ctx = canvas.getContext("2d");
                                ctx.drawImage(img, 0, 0, width, height);
                                //压缩率
                                return canvas.toDataURL("image/jpeg",0.9);
                            }
    

    3.上传到服务器

                
           //将dataUrl转换为二进制流
           function dataUrlToBlob(dataurl) { 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 Blob([u8arr], {type:mime}); } function uploadFile(dataUrl){ var file = dataUrlToBlob(dataUrl);//转换为流 var fd = new FormData();//formdata格式上传服务器 fd.append("file",file); $.ajax({ type: 'POST', url: "url", data: fd, processData: false, async: true, contentType: false, dataType: 'json', success: function (data) { } }); }

      

  • 相关阅读:
    祖国,让我为您写首歌
    提升信任度,是做网络营销成功的必由之路
    名字作诗已成流行语,你“OUT”了吧?
    腾飞天涯
    沈阳首个文化强市评价体系出炉,为沈阳文化振兴打分
    寄语“官员诗人”车延高:我挺你
    “自己选的路,就算跪着也要走完”引热议
    我在月光下想你
    国庆献礼谁为重
    gcc和g++的区别
  • 原文地址:https://www.cnblogs.com/difme/p/6934256.html
Copyright © 2011-2022 走看看