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 相关文章推荐
JS 如果改变span标签的是否隐藏属性
Oct 06 Javascript
javascript表单验证 - Parsley.js使用和配置
Jan 25 Javascript
js全屏显示显示代码的三种方法
Nov 11 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
Nov 19 Javascript
Node.js中创建和管理外部进程详解
Aug 16 Javascript
深入理解javascript作用域和闭包
Sep 23 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
Mar 03 Javascript
jQuery中hover与mouseover和mouseout的区别分析
Dec 24 Javascript
Vue.js -- 过滤器使用总结
Feb 18 Javascript
JS选取DOM元素常见操作方法实例分析
Dec 10 Javascript
vue2 中二级路由高亮问题及配置方法
Jun 10 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
Aug 31 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
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
javascript String 对象
2008/04/25 Javascript
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
js控制当再次点击按钮时的间隔时间
2014/06/03 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
canvas绘图不清晰的解决方案
2017/02/28 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
2018/04/08 Javascript
浅谈Vue的响应式原理
2019/05/30 Javascript
复习Python中的字符串知识点
2015/04/14 Python
解决.ui文件生成的.py文件运行不出现界面的方法
2019/06/19 Python
python代码编写计算器小程序
2020/03/30 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
体育学院毕业生自荐信
2013/11/03 职场文书
护士实习鉴定范文
2013/12/22 职场文书
银行批评与自我批评
2014/02/10 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
无犯罪记录证明
2014/09/19 职场文书
不服从公司安排检讨书
2014/09/24 职场文书
小学体育教学随笔
2015/08/14 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书