canvas教程

利用canvas压缩图片

字号+ 作者:H5之家 来源:H5之家 2017-08-03 17:04 我要评论( )

本文将为关注织梦者的朋友提供的是的利用canvas压缩图片相关教程,具体实例代码请看下文:现在手机拍的照片动不动就是几M,当用户上传手机里的照片时一个消耗流量

本文将为关注织梦者的朋友提供的是的利用canvas压缩图片相关教程,具体实例代码请看下文:

现在手机拍的照片动不动就是几M,当用户上传手机里的照片时一个消耗流量大,一个上传时间长,为了解决这个问题,就需要压缩图片:

想法:利用canvas重绘图片,保持宽高比不变,具体宽高根本具体情况而定。

代码 :

  html:

<input type="file" /> <p>压缩前:</p> <img src=""/> <p>压缩后:</p> <img src=""/>

  js:

var oldImg = document.getElementById("oldImg"); var newImg = document.getElementById("newImg"); //创建一个隐藏的canvas var canvas = document.createElement("canvas"); canvas.id = "myCanvas"; canvas.style.display = "none"; document.body.appendChild(canvas); var cxt = canvas.getContext('2d'); var upload = document.getElementById("upload"); upload.onchange = function(){ //获取input file里面的图片路径,该路径为blob格式 var url = getObjectURL(this.files[0]); oldImg.src = url; canvasImg.src = oldImg.src; canvasImg.onload = function(){ //这是一个过渡的img,当这个img加载完成时绘制到canvas上面 var m = oldImg.height/oldImg.width; canvas.width = 375; canvas.height = canvas.width*m; cxt.drawImage(canvasImg,0,0,canvas.width,canvas.height); //canvas绘制完成则转换为base64并传到新的图片上,再删除canvas var Pic = document.getElementById("myCanvas").toDataURL("image/png"); newImg.src = Pic; document.body.removeChild(canvas); } } //建立一個可存取到該file的url function getObjectURL(file) { var url = null; if(window.createObjectURL != undefined) { // basic url = window.createObjectURL(file); } else if(window.URL != undefined) { // mozilla(firefox) url = window.URL.createObjectURL(file); } else if(window.webkitURL != undefined) { // webkit or chrome url = window.webkitURL.createObjectURL(file); } return url; }

效果图 :

该效果图是在电脑端测试的,手机端类似:

利用canvas压缩图片

利用canvas压缩图片

备注 :

该方法转换成的是base64格式的图片,在前端页面代码里面看着很长,不舒服,有一个解决方法是等图片传到服务器之后,压缩后的图片直接显示服务器上的图片地址。

以上就是这篇文章的全部内容了,希望大家能够喜欢。

这些内容可能对你也有帮助

更多可查看Javascript教程列表页。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • HTML5 Canvas 画纸飞机组件

    HTML5 Canvas 画纸飞机组件

    2017-08-04 09:00

  • nest.js 源码

    nest.js 源码

    2017-08-01 13:06

  • 用canvas制作酷炫射击游戏--part2

    用canvas制作酷炫射击游戏--part2

    2017-07-31 16:01

  • 【canvas学习笔记1】基本认识

    【canvas学习笔记1】基本认识

    2017-07-31 13:02

网友点评
: