Canvas 像素处理之改变透明度的实现代码


Posted in HTML / CSS onJanuary 08, 2019

一 定义和用法

getImageData()方法返回 ImageData 对象,该对象拷贝了画布指定矩形的像素数据。

注意:ImageData对象不是图像,它规定了画布上一个部分(矩形),并保存了该矩形内每个像素的信息。

对于ImageData对象中的每个像素,都存在着四方面的信息,即RGBA值:

  • R - 红色(0-255)
  • G - 绿色(0-255)
  • B - 蓝色(0-255)

A - alpha 通道(0-255; 0 是透明的,255 是完全可见的)

color/alpha 信息以数组形式存在,并存储于 ImageData 对象的 data 属性中。

提示:在操作完成数组中的 color/alpha 信息之后,您可以使用 putImageData() 方法将图像数据拷贝回画布上。

二 代码

<!DOCTYPE html>
<html>
<head>
 <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />
 <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
 <title> 改变透明度 </title>
</head>
<body>
<h2> 改变透明度 </h2>
<canvas id="mc" width="600" height="460"
 style="border:1px solid black"></canvas>
<script type="text/javascript">
 // 获取canvas元素对应的DOM对象
 var canvas = document.getElementById('mc');
 // 获取在canvas上绘图的CanvasRenderingContext2D对象
 var ctx = canvas.getContext('2d');
 var image = new Image();
 image.src = "test.png";
 image.onload = function()
 {
  // 用带透明度参数的方法绘制图片
  drawImage(image , 124  , 20 , 0.4);
 }
 var drawImage = function(image , x  , y , alpha)
 {
  // 绘制图片
  ctx.drawImage(image , x , y);
  // 获取从x、y开始,宽为image.width、高为image.height的图片数据
  // 也就是获取绘制的图片数据
  var imgData = ctx.getImageData(x , y , image.width , image.height);
  for (var i = 0 , len = imgData.data.length ; i < len ; i += 4 )
  {
   // 改变每个像素的透明度
   imgData.data[i + 3] = imgData.data[i + 3] * alpha;
  }
  // 将获取的图片数据放回去。
  ctx.putImageData(imgData , x , y);
 }
</script>
</body>
</html>

三 运行结果

Canvas 像素处理之改变透明度的实现代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
CSS3字体效果的设置方法小结
Jun 13 HTML / CSS
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
Jun 06 HTML / CSS
css3实现垂直下拉动画菜单示例
Apr 22 HTML / CSS
CSS3 transform的skew属性值图文详解
Jul 21 HTML / CSS
html5文本内容_动力节点Java学院整理
Jul 11 HTML / CSS
详解Html5原生拖拽操作
Jan 12 HTML / CSS
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
Jan 09 HTML / CSS
HTML5 离线应用之打造零请求、无流量网站的解决方法
Apr 25 HTML / CSS
Application Cache未缓存文件无法访问无法加载问题
May 31 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
Mar 22 HTML / CSS
html5是什么_动力节点Java学院整理
Jul 07 HTML / CSS
关于html字符串正则判断和匹配的具体使用
Dec 12 HTML / CSS
详解Canvas实用库Fabric.js使用手册
Jan 07 #HTML / CSS
Html5原创俄罗斯方块(基于canvas)
Jan 07 #HTML / CSS
h5使用canvas画布实现手势解锁
Jan 04 #HTML / CSS
canvas中普通动效与粒子动效的实现代码示例
Jan 03 #HTML / CSS
详解webapp页面滚动卡顿的解决办法
Dec 26 #HTML / CSS
Html5调用手机摄像头并实现人脸识别的实现
Dec 21 #HTML / CSS
HTML5的postMessage的使用手册
Dec 19 #HTML / CSS
You might like
使用PHP批量生成随机用户名
2008/07/10 PHP
php利用cookie实现自动登录的方法
2014/12/10 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
php实现用于计算执行时间的类实例
2015/04/18 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
python求素数示例分享
2014/02/16 Python
利用Python演示数型数据结构的教程
2015/04/03 Python
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
python怎么提高计算速度
2020/06/11 Python
软件测试有哪些?什么是配置项?
2012/02/12 面试题
数控技术专业推荐信
2013/11/01 职场文书
物流管理专业应届生求职信
2013/11/21 职场文书
中秋节超市促销方案
2014/01/30 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
12月红领巾广播稿
2014/02/13 职场文书
企业精细化管理实施方案
2014/03/23 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
党章党规党纪学习心得体会
2016/01/14 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS