带你快速玩转canvas(5)画布某时刻某部分画面的存储和恢复
来源:互联网 发布:volte网络架构 编辑:程序博客网 时间:2024/05/16 05:54
7. 画布的读取和写入
解释:
1. 简单来说,就是通过一个API保存当前画布某部分区域的图案;2. 然后可以通过另外一个API来恢复保存时的图案,可以恢复到某个指定位置;3. 保存时,返回一个变量,这个变量是一个对象: 他有width和height属性表示画布宽高; 还有data属性,用于保存画布各个像素的状态; data属性是一个数组,其保存原理是通过每个像素的rgba属性来保存; 因为rgba是4个属性,分别表示红、绿、蓝、透明度,值的范围是0~255(包括透明度,255表示不透明); 因此,每个像素占用数组中四个位置。 然后这么做的,先取出坐标0,0点像素的四个属性,放在data属性数组中(此时data属性有四个元素); 然后再找出坐标1.0点像素的四个属性,再放进去(此时data属性中有八个元素); 然后放完画布上y=0的所有像素,再开始放y=1的所有像素,依次类推。4. 当已知data属性的存储原理时,可以通过修改data属性中,数组的元素的值,来修改存储的图像;5. 例如,将每个像素表示透明度的元素的值,修改为比较小的值,则存储的图像信息则变为半透明了(注意,此时原图像没又被改变)。6. 然后将修改后的存储的图像信息,通过api写入canvas,则新的图像变为半透明了。
ctx.getImageData(x, y, width, height);
1. 简单来说,就是从画布的x,y坐标开始,取width宽height高的矩形区域的图像信息,返回一个对象;2. 这个对象就是存储了图像的宽高和所有像素的信息;3. 恢复图像时,需要使用这个方法返回的对象;4. 如果width或者height为0,则可能会抛出错误(应避免);5. 返回值是一个ImageData对象;
ctx.putImageData(imagedata, dx, dy)
1. 简单来说,就是将getImageData这个api返回的对象,通过这个api将存储的图像放置在起始坐标为(dx, dy)的地方;2. 设置时,图像的默认宽高是存储的原图像的宽高;3. 不会对存储的图像进行缩放;4. 图像绘制后,超出画布显示区域的,不会被显示。
ctx.putImageData(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight)
1. 简单来说,从原图像中,取出一部分,然后放到画布中。2. 具体来说,从原图像中,取出起始坐标为(dirtyX, dirtyY),宽高为(dirtyWidth, dirtyHeight)的矩形区域,然后绘制到画布上起始坐标(dx, dy)的区域;3. 同样,对图像绘制时,不会进行缩放;
DEMO见链接:
DEMO
0 0
- 带你快速玩转canvas(5)画布某时刻某部分画面的存储和恢复
- 带你快速玩转canvas(7)保存画笔状态和恢复画笔状态
- 带你快速玩转canvas(6)导出为base64字符串和画笔的保存
- 带你快速玩转canvas(1)上手和染色
- 带你快速玩转canvas(8)非常用API的说明集
- 带你快速玩转canvas(2)画个矩形,再画个圆
- 带你快速玩转canvas(3)贴个图片,写点字
- 带你快速玩转canvas(4)实战——写个折线图
- 玩转Html5<canvas>画布
- 玩转html5(二)----用canvas结合脚本在画布上画简单的图
- 带你玩转JavaWeb开发之一-HTML快速入门
- Android 的画布Canvas和画笔Paint
- 画布和绘图(Canvas and Drawables)
- 玩转html5(二)----用canvas结合脚本在画布上画简单的图(html5又一强大功能)
- Delphi中canvas(画布)的运用
- delphi中Canvas(画布)的运用
- Delphi中canvas(画布)的运用
- Canvas(画布)类的使用
- ACdream - 1095 幸运女神的相反数
- 《React-Native系列》38、 ReactNative混合组件封装
- 后缀数组(内容待补)
- PAT基础编程 5-8 超速判断 (10分)
- eclipse与intellij idea的区别
- 带你快速玩转canvas(5)画布某时刻某部分画面的存储和恢复
- BZOJ1861: [Zjoi2006]Book 书架 Splay
- 《React-Native系列》39、 ReactNative之bundle文件瘦身
- K-means与高斯混合模型
- ubuntu下apache服务器操作方法
- 《React-Native系列》40、刨根问底Picker组件
- 单例模式的一种应用场景
- Android判断网络连接
- 《React-Native系列》React-Native实战系列博客汇总