首页 >web前端 >html教程 > 正文

使用canvas压缩图片的具体步骤

转载2020-10-30 17:13:0701571

使用canvas压缩图片的步骤:

(视频教程推荐:html视频教程

1、拿到图片元素

2、绘制一个空白的canvas

3、将图片绘制在canvas上

4、将canvas转成base64(这里调用的方法可以实现压缩,base64就可以直接放入src或者传入后端、转成别的格式传输等。)

代码实现:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
 <img src="test.png" style="width: 200px; height: 400px;" id="imgBefore">
    <img src="" id="imgafter"> //待会压缩完的图片放入这里。
</body>
</html>
<script>
    var img = document.getElementById('imgBefore') //拿到图片元素
    img.setAttribute("crossOrigin",'Anonymous') //这句话并不是必要的,如果你的图片是一个网络链接,
    //那么canvas绘制时可能会报错,是因为跨域的安全性问题。报错时加上就对了。
    img.onload = ()=>{ //要确保图片已经加载完才进行绘制,不然拿不到图片元素会绘制出全黑的区域,就是失败。
        var width = img.width
        var height = img.height
        var canvas = document.createElement('canvas');
        var ctx = canvas.getContext('2d');
        canvas.width = width;
        canvas.height = height; //以上几步都在绘制一个canvas
        ctx.drawImage(img,0,0,width,height);//将图片绘制进去,这里第一个参数可以接受很多格式,
        //以元素为例子,详情https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/drawImage
        var base64 = canvas.toDataURL('image/jpeg',0.2); //第二个参数为压缩的比例,越小越模糊。0-1
        document.getElementById('imgafter').src = base64
    }
        
</script>

效果对比:

压缩前

be4fddbd7ee900b46e21c387a40522e.png

压缩后:

d18fe1c4af6bae7b890159869771bad.png

相关推荐:html教程

以上就是使用canvas压缩图片的具体步骤的详细内容,更多请关注php中文网其它相关文章!

php中文网最新课程二维码

声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除

  • 相关标签:canvas 图片
  • 相关文章

    相关视频


    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
  • 专题推荐

    推荐视频教程
  • HTML趣味闯关课堂HTML趣味闯关课堂
  • HTML5基础精讲视频教程HTML5基础精讲视频教程
  • 从零开始构建HTML页面从零开始构建HTML页面
  • HTML5 Canvas 动画实战教程HTML5 Canvas 动画实战教程
  • 视频教程分类