canvas压缩图片转换成base64格式输出文件流


Posted in Javascript onMarch 09, 2017

昨天研究了一下canvas压缩图片的方法,上传上来给大家分享一下

<!--调用canvas方法-->
 <canvas id="canvas"></canvas>
 <!--压缩后的图片路劲-->
 <img src="" class="preview">
 <img src="" class="preview">
 <!--原图压缩-->
 <img class="source" src="" style="display: none;">
 <img class="source" src="" style="display: none;">
// drawimage三种调用方法
 // ctx.drawImage(Image,dx,dy);
 // ctx.drawImage(Image,dx,dy,dWidth,dHeight);
 // ctx.drawImage(Image,sx,sy,sWidth,sHeight,dx,dy,dWidth,dHeight);
 //images图片元素,出来预判还支持其他三种格式,分别是htmlvideoElement htmlcanvasElement imagebitmap
 //todataurl是canvas画布元素的方法,放回指定的图片格式的data url,也就是base64编码串
 //todataurl方法最多接受两个参数,并且这两个参数都是可选的:
 //type图片格式.支持3种方式,分别是image/jpeg images/png image/webp,默认是image.png
 var canvas = document.getElementById('canvas');
 var source = document.getElementsByClassName('source');
 var preview = document.getElementsByClassName('preview');
 canvas.style.display = "none";
 window.onload = function() {
 //多张图片循环便利压缩
 for(var i = 0; i < preview.length; i++) {
  var width = source[i].width;
  var height = source[i].height;
  var context = canvas.getContext('2d');
  //sx要绘制到canvas画布的源图片区域(矩形)在x轴上偏移量
  var sx = 0;
  //sy要绘制到canvas画布的源图片区域(矩形)在y轴上偏移量
  var sy = 0;
  //swidth要绘制到canvas画布中的源图片区域的宽度,如果没有制定这个值,宽度则是sx到图片最右边的距离
  var sWidth = width;
  //sHeight要绘制到画布中的源图片区域的宽度,如果没有制定这个值,高度则是sy到图片最下边的距离
  var sHeight = height;
  //dx源图片左上角在canvas画布上x轴上偏移量
  var dx = 0;
  //dy源图片左上角在画布y轴上的偏移量
  var dy = 0;
  //dwidth绘制图片的canvas画布宽度
  //dHeight绘制图片的画布高度
  var dWidth = width;
  var dHeight = height;
  var quality = 0.2;
  canvas.width = width;
  canvas.height = height;
  context.drawImage(source[i], sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);
  var dataUrl = canvas.toDataURL('image/jpeg', quality);
  preview[i].src = dataUrl;
 }
 // console.info(dataUrl);
 };
 //遍历原图
 for(var i = 0; i < source.length; i++) {
 source[i].src = 'img/' + (i + 1) + '.jpg';
 }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
(仅IE下有效)关于checkbox 三态
May 12 Javascript
jQuery中校验时间格式的正则表达式小结
Sep 22 Javascript
div失去焦点事件实现思路
Apr 22 Javascript
js阻止事件追加的具体实现
Oct 15 Javascript
jQuery实现预加载图片的方法
Mar 17 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
Mar 02 Javascript
vue-router 路由基础的详解
Oct 17 Javascript
vue-cli3.0 特性解读
Apr 22 Javascript
vue 实现强制类型转换 数字类型转为字符串
Nov 07 Javascript
vue+Element中table表格实现可编辑(select下拉框)
May 21 Javascript
谈谈JavaScript中的函数
Sep 08 Javascript
JavaScript动态生成表格的示例
Nov 02 Javascript
Bootstrap笔记之缩略图、警告框实例详解
Mar 09 #Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
Mar 09 #Javascript
bootstrap实现的自适应页面简单应用示例
Mar 09 #Javascript
js实现3D图片环展示效果
Mar 09 #Javascript
Vue监听数组变化源码解析
Mar 09 #Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
Mar 09 #Javascript
基于jQuery实现一个marquee无缝滚动的插件
Mar 09 #Javascript
You might like
phpmyadmin操作流程
2006/10/09 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
PDO防注入原理分析以及注意事项
2015/02/25 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
JQquery的一些使用心得分享
2012/08/01 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
用JavaScript和jQuery实现瀑布流
2017/03/19 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
python的exec、eval使用分析
2017/12/11 Python
详解Python3注释知识点
2019/02/19 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
详解H5 活动页之移动端 REM 布局适配方法
2017/12/07 HTML / CSS
后勤采购员岗位职责
2013/12/19 职场文书
企业授权委托书范本
2014/04/02 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS