300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > JS+Canvas实现图片预览压缩和上传

JS+Canvas实现图片预览压缩和上传

时间:2021-04-10 23:57:13

相关推荐

JS+Canvas实现图片预览压缩和上传

web前端|js教程

javascript,JS+Canvas,压缩

web前端-js教程先来一张效果图,压压惊

bt论坛源码,plist vscode,wacom ubuntu,tomcat聊天,sqlite源码技巧,网络优化服务器,ck插件,relworld前端框架排名,爬虫类宠物店,新手PHP面试技巧,免费流量seo,个人网站 导航,简单asp网页源码,模板网站制作,css3引导页面动画效果,管理系统ui框架,微信小程序 源码lzw

易语言取路径源码,vscode插件商店无法搜索,ubuntu 配置qt,tomcat 社区,电脑sqlite,微信内的网页设计时尺寸是多少,apmserv5.2.6数据库密码,马来西亚服务器租用,wordpress ecshop插件,mac前端框架,爬虫PAC,天津php,seo最强,springboot远程使用,齐博v7标签变量用法,有没有类似云淘宝客这样的网站,dw网页代码,表白网站模板下载,织梦后台提示信息修改,页面点赞功能,源代码 日志管理系统,java小程序源码lzw

第一步:用户选择需要上传的图片

开奖网直播源码,vscode循环怎么停止,ubuntu自学视频,tomcat中途闪退,sqlite3下载和安装,爬虫 拼图,win8.1 php环境,seo执行力训练,苹果手机视频网站源码,儿童娱乐项目门票设计模板lzw

在选定了图片后 upload 函数将被触发,我们需要在这个函数中,获取到图片的资源,将它压缩并利用canvas绘制出来,若需要上传到服务器,也可以利用ajax或者其他方式上传。

第二步:获取图片资源压缩预览上传

function upload() { let file = document.querySelector(input[type=file]).files[0] // 获取选择的文件,这里是图片类型 let reader = new FileReader()reader.readAsDataURL(file) //读取文件并将文件以URL的形式保存在resulr属性中 base64格式reader.onload = function(e) { // 文件读取完成时触发 let result = e.target.result // base64格式图片地址 var image = new Image() image.src = result // 设置image的地址为base64的地址 image.onload = function(){var canvas = document.querySelector("#canvas");var context = canvas.getContext("2d");canvas.width = image.width; // 设置canvas的画布宽度为图片宽度canvas.height = image.height;context.drawImage(image, 0, 0, image.width, image.height) // 在canvas上绘制图片let dataUrl = canvas.toDataURL(image/jpeg, 0.92) // 0.92为压缩比,可根据需要设置,设置过小会影响图片质量 // dataUrl 为压缩后的图片资源,可将其上传到服务器 }} }

现在我们来比较一下图片是否成功压缩:

原图大小:

压缩比设置为0.92:

压缩比设置为0.52

乍一看,你是不是觉得很奇怪,为什么设置了缩放比为0.92,图片居然比原图大?其实图片通过base64编码后都会变的比原图大,具体原因可以查阅base64的编码原理。如此看来,我们已经成功压缩了图片!

注意点:canvas在IE9以下不支持;大图片尽量不要使用base64,影响响应速度。

总结

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。