美文网首页惠学宝web技术
前端学习之路——图片上传压缩

前端学习之路——图片上传压缩

作者: 追风少年_hxb | 来源:发表于2018-01-04 18:12 被阅读74次

废话不多少,直接上代码!

压缩图片函数
 function canvasDataURL(path, obj, callback){
       var img = document.createElement('img');
             img.src = path;
             img.onload = function(){
              var that = this;
              //  默认按比例压缩
              var w = that.width,
               h = that.height,
               scale = w / h;
               w = obj.width || w;
               h = obj.height || (w / scale);
              var quality = 0.7;  // 默认图片质量为0.7
              // 生成canvas
              var canvas = document.createElement('canvas');
              var ctx = canvas.getContext('2d');
              //  创建属性节点
              var anw = document.createAttribute("width");
              anw.nodeValue = w;
              var anh = document.createAttribute("height");
              anh.nodeValue = h;
              canvas.setAttributeNode(anw);
              canvas.setAttributeNode(anh); 
              ctx.drawImage(that, 0, 0, w, h);
              //  图像质量
              if(obj.quality && obj.quality <= 1 && obj.quality > 0){
               quality = obj.quality;
              }
              // quality值越小,所绘制出的图像越模糊
              var base64 = canvas.toDataURL('image/jpeg', quality);
              // 回调函数返回base64的值
              callback(base64);
            }
        };
调用函数
canvasDataURL("img/c6.png", {
//  注意:在pc端可以用绝对路径或相对路径,移动端最好用绝对路径(因为用take photo后的图片路径,我没有试成功(如果有人试成功了可以分享一下经验))
   width : 300,
   height:100,
   quality:0.7
}, function(base){
//直接将获取到的base64的字符串,放到一个image标签中就可看到测试后的压缩之后的样式图了
 document.getElementById("transform").src = base;
 console.log("压缩后:" + base.length / 1024 + " " + base);    
})
图片上传与压缩
<img id="transform" src="img/c6.png"/>
 <input type="file" onchange="file(event)" />
<script>
function file(ev) {
    console.log(ev.target.files[0])
    var files = ev.target.files[0]
    var reade = new FileReader()
    reade.readAsDataURL(ev.target.files[0])
    reade.onload = function (data) {
        // console.log(data.target.result)
        canvasDataURL(data.target.result, { quality:0.7}, function(base){
//直接将获取到的base64的字符串,放到一个image标签中就可看到测试后的压缩之后的样式图了
 document.getElementById("transform").src = base;
 console.log("压缩后:" + base.length / 1024 + " " + base);    
});
    }
};
<script>

图片上传与压缩就是这么简单,欢迎大家点评指导。

相关文章

  • 前端学习之路——图片上传压缩

    废话不多少,直接上代码! 压缩图片函数 调用函数 图片上传与压缩 图片上传与压缩就是这么简单,欢迎大家点评指导。

  • 图片压缩上传

    参考1-HTML5实现图片压缩上传功能参考2-移动前端—图片压缩上传实践参考3-移动端H5图片压缩上传 大体步骤 ...

  • HTML5 file API加canvas实现图片前端JS压缩并

    一、图片上传前端压缩的现实意义 对于大尺寸图片的上传,在前端进行压缩除了省流量外,最大的意义是极大的提高了用户体验...

  • 一次基于electron的图片上传插件的开发过程

    背景: 项目前端有个图片压缩包上传功能,用户上传的时候会选择单反拍摄的巨幅图片,由于前端打不开压缩包,也没法读取压...

  • 前端图片压缩上传

    最近公司有个需求,就是上传照片时需要先压缩。其中上传原理是用ajax上传formdata数据,压缩是采用canva...

  • 前端图片压缩上传

    (纯js的质量压缩,非长宽压缩) 此demo为大于1M对图片进行压缩上传 若小于1M则原图上传,可以根据自己实际需...

  • 图片压缩上传

    关键词:h5 FileReader、canvas压缩、多图片上传 一、前言 做过前端的同学都知道,图片上传是我们遇...

  • h5上传图片压缩

    涉及知识点 uniapp项目h5,涉及到前端图片压缩上传 uni.chooseImage() canvas压缩 参...

  • 前端压缩并上传图片

    背景 移动端工单报修的场景中,上传图片的功能已经屡见不鲜,但现在手机像素普遍较高,随手拍一张图片都6、7M,十几兆...

  • iOS 网络上传图片

    上传图片 构造参数(NSArray *)files 上传图片—压缩 压缩到小于(...

网友评论

  • 小猫逗小狗:好!(此回复虽有且仅有一个字,却深刻的表达了回复人的深深祝福与刻骨的情感,可谓言简意骇,一字千金,字字扣人心弦,字字催人泪下,足可见回复人扎实的文字功底和信手拈来的写作技巧以及惨绝人寰的创新潜质。再加上以感叹号收尾,点睛之笔,妙笔生花,意境深远,照应前文,升华主题)
  • Mr_xu_hxb:好!(此回复虽有且仅有一个字,却深刻的表达了回复人的深深祝福与刻骨的情感,可谓言简意骇,一字千金,字字扣人心弦,字字催人泪下,足可见回复人扎实的文字功底和信手拈来的写作技巧以及惨绝人寰的创新潜质。再加上以感叹号收尾,点睛之笔,妙笔生花,意境深远,照应前文,升华主题)

本文标题:前端学习之路——图片上传压缩

本文链接:https://www.haomeiwen.com/subject/uxqdnxtx.html