留意 drawImage 的坑,Canvas教程大升级

博客分享了在使用Canvas的drawImage API时遇到的两个坑,一是Safari浏览器因裁剪尺寸超出原图大小导致图片无法渲染,二是IE浏览器报indexSizeError错误。解决办法包括在绘制前校验宽高不超过原图尺寸,并在调用drawImage时捕获可能的异常。此外,作者还更新了Canvas教程,增加了更多互动示例,使教程更易理解。
摘要由CSDN通过智能技术生成

前段时间写了一篇文章容易被 drawImage 搞晕

坑1:在 Safari 浏览器中没有任何报错信息,但是图片渲染不出来;

解决方案:出现这个问题的原因,网上说是 Safari 的 bug,触发条件是图片裁剪时的 width 或 height 超出了原图 width 或 height,比如原图的宽是 300,高 400,裁剪时设置的宽为 300.05,这将导致在 Safari 上绘制不了。所以在绘制之前需要校验宽高,不能超过原图的尺寸。

坑2:在 IE浏览器中报 indexSizeError 错误,图片渲染不出来;

这个其实和坑1差不多,只要尺寸对了,IE 上也就不会报这个错误了。但是需要强调一点,drawImage 这个 API 会抛出异常,在使用这个 API 需要 catch 一下,否则可能会导致你所有的绘制被阻塞。MDN 上关于这个 API 也有说明:

03deee756f4ee943b8ee9f6a90c5d4f8.png

顺便说一件事情,最近对 Canvas 教程做了一次升级,效果大大的增强,我们看下关于 transform 的 demo 效果:

79725c74f9262913fdd1c3215c2b68e8.png

demo 中的代码也有详细的说明:

57c667a3219539c534f3d15d70639bb7.png

在绘制过程中可任意切换坐标原点,设置原点为左上角:

1defe390b189a9073a25bae602ebb5b1.png

目前 demo 中已经完成了不少:

d85cc64c1a14ef907223ec3c1eb0e443.png

相信用这种方式写出来的教程更通俗易懂。大家加油!!!

教程地址:https://github.com/lefex/FE/tree/master/learn-canvas

39749cbbc7723152533e734bd8f1b9fd.png

长按关注

素燕《前端小课》

帮助 10W 人入门并进阶前端

官网:https://lefex.gitee.io/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值