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


本文摘自PHP中文网,作者V,侵删。

使用canvas压缩图片的步骤:

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

1、拿到图片元素

2、绘制一个空白的canvas

3、将图片绘制在canvas上

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

代码实现:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

<!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>

效果对比:

阅读剩余部分

相关阅读 >>

canvas中beginpath()和closepath()作用的实例解析

如何用html5中的canvas绘制渐变矩形

通过html5中的canvas来绘制一个圆环形进度条

html5和js绘制图片到canvas的方法

canvas实现旋转风车的绘制

html5 canvas 图形组合是如何实现的?附代码

分享利用html5实现图片压缩上传的实例代码

分享h5 canvas圆圈进度条的实例代码

利用html5实现图片的淡入淡出效果

html5 canvas基本绘图之绘制矩形

更多相关阅读请进入《canvas》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...