最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

怎么用Canvas压缩图片

来源:动视网 责编:小采 时间:2020-11-27 15:06:35
文档

怎么用Canvas压缩图片

怎么用Canvas压缩图片:这次给大家带怎么用Canvas压缩图片?用Canvas压缩图片 的注意事项有哪些,下面就是实战案例,一起来看一下。一、本地图片输入1. 获取本地文件<!--HTML--> <input type="file" id="choose-img" /
推荐度:
导读怎么用Canvas压缩图片:这次给大家带怎么用Canvas压缩图片?用Canvas压缩图片 的注意事项有哪些,下面就是实战案例,一起来看一下。一、本地图片输入1. 获取本地文件<!--HTML--> <input type="file" id="choose-img" /


这次给大家带怎么用Canvas压缩图片?用Canvas压缩图片 的注意事项有哪些,下面就是实战案例,一起来看一下。

一、本地图片输入

1. 获取本地文件

<!--HTML-->
<input type="file" id="choose-img" />
// JS
var chooseImg = document.getElementById("choose-img");
chooseImg.onchange = function(e){
 var file = this.files[0];
 // …… (省略部分代码后续依次展示,下同)
};

很简单,就是通过type类型为file的按钮来获取本地文件。

2. 判断所获取的本地文件类型

<!--HTML-->
<div id="result"></div>
// JS
var result = document.getElementById("result"); // 用于显示图片
输出结果,或者错误提示 if(/image/.test(file.type)){ // 判断文件类型是否为图片 // …… } else{ result.innerHTML = '<span style="color: red;">文件类型有误!</span>'; }

3. 将所获取的本地图片以base格式输出

var img = new Image(), // 创建图片对象,用于放置原始图片
 reader = new FileReader();
reader.readAsDataURL(file); // 以base格式读取并存入FileReader对象的result属性中
reader.onload = function(){
 img.src = this.result; // 将图片base字符串直接赋予Image对象的src中
 document.body.insertBefore(img,chooseImg); // 将
输出的图片插入到文件按钮之前 img.onload = function(){ // …… }; };

二、在Canvas画布中绘制图片

1. 创建画布

var canvas = document.createElement('canvas');
canvas.width = img.clientWidth;
canvas.height = img.clientHeight;
var context = canvas.getContext('2d');

注意:画布大小与所输入图片宽高相同。

2. 绘制图片

context.drawImage(img,0,0,canvas.width,canvas.height);

三、压缩图片并输出

<!--HTML-->
图片压缩比率 : <input id="rate" type="number" min="0" max="100" /> %
// JS
var chooseImg = document.getElementById("choose-img"),
 result = document.getElementById("result");
chooseImg.onchange = function(e){
 var file = this.files[0];
 if(/image/.test(file.type)){
 var img = new Image(),
 reader = new FileReader();
 reader.readAsDataURL(file);
 reader.onload = function(){
 img.src = this.result;
 document.body.insertBefore(img,chooseImg);
 img.onload = function(){
 var canvas = document.createElement('canvas');
 canvas.width = img.clientWidth;
 canvas.height = img.clientHeight;
 var context = canvas.getContext('2d');
 context.drawImage(img,0,0,canvas.width,canvas.height);
 var rate = document.getElementById("rate").value || 100;
 var imgUrl = canvas.toDataURL(file.type,rate/100);
 result.innerHTML = '压缩后:<img src="'+ imgUrl +'" />';
 result.style.display = 'block';
 img.style.display = 'none';
 };
 };
 }
 else{
 result.innerHTML = '<span style="color: red;">文件类型有误!</span>';
 }
};

经测试发现,通过Canvas压缩JPEG格式图片效果最佳,PNG压缩效果不明显,有时反而变得更大。

相信看了这些案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

相关阅读:

H5的块级标签汇总

H5的进阶段内联标签

怎样使用H5调用摄像头

文档

怎么用Canvas压缩图片

怎么用Canvas压缩图片:这次给大家带怎么用Canvas压缩图片?用Canvas压缩图片 的注意事项有哪些,下面就是实战案例,一起来看一下。一、本地图片输入1. 获取本地文件<!--HTML--> <input type="file" id="choose-img" /
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top