首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >html5前端图片压缩

html5前端图片压缩

作者头像
OECOM
发布2020-07-02 09:31:37
发布2020-07-02 09:31:37
4K00
代码可运行
举报
文章被收录于专栏:OECOMOECOM
运行总次数:0
代码可运行

如今手机像素越来越高,造成拍出来的照片越来越大,随便拍一张就好几兆,于是乎就有了一种需求就是压缩图片,在之前压缩图片的功能是在后台操作的,之后前端亦可以进行图片的压缩功能。

前端进行图片压缩的原理很简单,就是利用canvas来进行压缩,js将file框内的图片文件读取之后,按照比例绘制到canvas上,然后将canvas保存成图片即可实现了压缩功能。

代码语言:javascript
代码运行次数:0
运行
复制
function resizeMe(img, max_width, max_height) {

        var canvas = document.createElement('canvas');
        var width = img.width;
        var height = img.height;

        // 在这里图片是等比例缩放的,调用方法时填入图片允许的最大宽度或者是最大的高度
        //如果最大宽度为0 则按照最大高度固定,宽度自适应的方式来实现
        //如果是最大高度为0,则按照最大的宽度来实现
        if(max_width==0){
	        	if (height > max_height) {
	                width = Math.round(width *= max_height / height);
	                height = max_height;
	            }
	        }
	        if(max_height==0){
	        	 if (width > max_width) {
		                height = Math.round(height *= max_width / width);
		                width = max_width;
		            }
	        }		
	canvas.width =width;
	canvas.height = height;
        var ctx = canvas.getContext("2d");
	canvas.width =width;
	canvas.height = height;
	ctx.drawImage(img,0,0, width, height);		
        return canvas.toDataURL("image/jpeg", 0.7);//这里的0.7值的是图片的质量

    }

当file框改变后读取文件

代码语言:javascript
代码运行次数:0
运行
复制
var selectFileImage = (el)=>{
	var reader = new FileReader();
	reader.readAsArrayBuffer(el.files[0]);
	var file = el.files[0]
	reader.onload = (ev) => {
		var blob = new Blob([ev.target['result']]);
		window['URL'] = window['URL'] || window['webkitURL'];
		var blobURL = window['URL'].createObjectURL(blob);
                var image = new Image();
		image.src = blobURL;
		image.onload = (e) => {
		var thumb = resizeMe(image, 200, 0,myorientation);//获得的路径是将图片转换成了base64
		$("#myImage").attr("src",thumb);					  
		}	 
}

至此,图片的压缩功能已经完全实现了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档