• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Canvas与图片压缩的示例代码

php 搞代码 4年前 (2022-01-22) 43次浏览 已收录 0个评论

canvas 元素用于在网页上绘制图形。HTML5 的 canvas 元素使用 JavaScript 在网页上绘制2D图像。在矩形区域的画布上,JavaScript 绘制 2D图形,逐像素进行渲染,可以通过多种方法使用canvas元素绘制路径、矩形、圆形、字符以及添加图像。本文我们和大家分享Canvas与图片压缩的示例代码。

Canvas图片压缩流程

接下来我将以具体实例为大家讲解Canvas图片压缩的具体流程。

一、本地图片输入

1. 获取本地文件

<!--HTML--><input type="file" id="choose-img" />

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

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

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

<!--HTML--><p id="result"></p>

// JSvar result = document.getElementById("result");    // 用于显示图片输出结果,或者错误提示if(/image/.te<strong>(本文来源gaodai#ma#com搞@@代~&码网</strong><pre>搞代gaodaima码

st(file.type)){ // 判断文件类型是否为图片 // ……}else{ result.innerHTML = '<span style="color: red;">文件类型有误!</span>';}

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

var img = new Image(),      // 创建图片对象,用于放置原始图片    reader = new FileReader();reader.readAsDataURL(file);    // 以base64格式读取并存入FileReader对象的result属性中reader.onload = function(){    img.src = this.result;   // 将图片base64字符串直接赋予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" /> %

// JSvar rate = document.getElementById("rate").value || 100;   // 输入图片压缩比率,默认为100%var imgUrl = canvas.toDataURL(file.type,rate/100);   // 第一个参数为输出图片类型,第二个为压缩比result.innerHTML = '压缩后:<img src="'+ imgUrl +'" />';     // 将压缩后的图片置于result中显示img.style.display = 'none';   // 将原始图片隐藏

将在Canvas画布中所绘制的图片再次以base64格式输出。

四、完整代码展示

<!--HTML-->图片压缩比率 : <input id="rate" type="number" min="0" max="100" /> %<input type="file" id="choose-img" /><p id="result"></p>

// JSvar 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压缩效果不明显,有时反而变得更大。

以上内容就是Canvas与图片压缩的示例代码,希望能帮助到大家。

相关推荐:

怎样用canvas实现小球和鼠标的互动

怎样用canvas做出粒子喷泉动画的效果

HTML5里Canvas常用的绘图技巧

canvas制作鼠标拖动绘制图形

实例详解html5使用canvas实现图片下载功能

以上就是Canvas与图片压缩的示例代码的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Canvas与图片压缩的示例代码

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址