开发者社区> 问答> 正文

关于客户端JS能否等比例压缩图片的请教

当用户通过浏览器上传图片时,不管用户用了多大的图片,都使其能够上传,现在想用JS先在浏览器上对图片进行压缩处理,然后上传,而不是将整个图片上传到后台服务器然后在压缩后存储。请问这种方案是否可行?新浪微博在上传图片的时候是怎样一种解决方案?请各路大牛不吝赐教!谢谢。

展开
收起
a123456678 2016-03-10 17:24:56 2521 0
1 条回答
写回答
取消 提交回答
  • 如果要所有运算都在客户端通过js完成,目前只有html5的canvas和file api才能满足你的需要。但是对国内用户来说,支持html5的浏览器普及率还不够高。

    新浪微博的图片上传使用的是图片上传后然后,再在服务器端压缩的方法,实际上这种方式的消耗也很少。目前普遍上使用的都是这种方式,因为只需要在上传的时候压缩一次。

    <script language="JavaScript" type="text/javascript"> 
    function DrawImage(ImgD,FitWidth,FitHeight) 
    { 
    var image=new Image(); 
    image.src=ImgD.src; 
        if(image.width>0 && image.height>0) 
        { 
    
            if(image.width>FitWidth) 
            { 
                ImgD.width=FitWidth; 
                ImgD.height=(image.height*FitWidth)/image.width; 
                if(ImgD.height>FitHeight)
                {
                    ImgD.height=FitHeight; 
                    ImgD.width=(image.width*FitHeight)/image.height; 
                }
            } 
            else if(image.height>FitHeight) 
            { 
                ImgD.height=FitHeight; 
                ImgD.width=(image.width*FitHeight)/image.height; 
                if(image.width>FitWidth)
                {
                    ImgD.width=FitWidth; 
                    ImgD.height=(image.height*FitWidth)/image.width; 
                }
            }
            else
            { 
                ImgD.width=image.width; 
                ImgD.height=image.height; 
            } 
        } 
    } 
    </script>
    2019-07-17 18:58:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载