canvas教程

js利用canvas画图将客户端要上传的大图片压缩到最小后再次上传

字号+ 作者:H5之家 来源:H5之家 2016-01-18 14:21 我要评论( )

大家百度搜索

大家百度搜索“canvas图片压缩”相信很多结果可以被搜索出来,但是有没有仔细去发现这些代码都是出自一人之手,所以即使错误了也都错的一样!

互联网垃圾信息太多了,我今天刚好做到手机端一个活动,需要用户上传照片,但是又不能控制用户上传图片的大小,如果控制了,那么对用户体验太差,如果不控制,那么上传速度慢体验一样很差,所以就考虑用canvas把即将上传的图片先压缩为64位编码后再以文本方式保存到数据库,这样就速度多了。。。!

百度了一下这个canvas压缩图片的方法,结果都是一样的,关键是没几个能调通的,竟然还有把javascript的标签类型写成“javascript/text”的,一气之下我觉得自己根据网上的思路自己整理一个(支持PC端、手机端),小编很辛苦,希望大家分享的时候注明来源,谢谢!

如果遇到了IE,那么大家网上搜索下excanvas.js这个文件,引入这个文件后你的canvas就可以正常工作了

HTML代码:

<input type="file" value="" onchange="fileChange(this)"/>
<img src="" alt="图片压缩后的64位编码" >

JS代码:

页面引入    src="//cdn.bootcss.com/jquery/1.9.0/jquery.min.js"

    function fileChange(e){
        var f = e.files[0];//一次只上传1个文件,其实可以上传多个的
        var FR = new FileReader();
        FR.readAsDataURL(f);
        FR.onload = function(f){
            compressImg(this.result,200,function(data){
                $("#newImg").attr("src",data);//保存图片压缩后的64位编码
            });
        };
    }
    
    function compressImg(imgData,maxHeight,onCompress){
        if(!imgData)return false;
        onCompress = onCompress || function(){};
        maxHeight = maxHeight || 800;//默认最大高度800px
        var canvas = document.createElement(canvas);
        var img = new Image();
            img.src = imgData;
            
        img.onload = function(){
            if(img.height > maxHeight) {//按最大高度等比缩放
                img.width *= maxHeight / img.height;
                img.height = maxHeight;
            }
            
            var ctx = canvas.getContext("2d");
            ctx.clearRect(0, 0, canvas.width, canvas.height);
            canvas.width = img.width;
            canvas.height = img.height;
            ctx.drawImage(img, 0, 0, img.width, img.height);
            onCompress(canvas.toDataURL("image/jpeg"));
        };
    }

更多详情:   

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • html5canvas画图例子

    html5canvas画图例子

    2017-04-24 15:02

  • canvas画图代码实例

    canvas画图代码实例

    2017-04-11 12:06

  • Canvas画图基础 Beta空间

    Canvas画图基础 Beta空间

    2017-04-09 08:00

  • Canvas画图-鼠标移动图形

    Canvas画图-鼠标移动图形

    2017-04-04 09:08

网友点评