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 动画技术
Jul 27 HTML / CSS
利用css3制作3D样式按钮实现代码
Mar 18 HTML / CSS
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
Jun 28 HTML / CSS
利用CSS3制作简单的3d半透明立方体图片展示
Mar 25 HTML / CSS
css3边框_动力节点Java学院整理
Jul 11 HTML / CSS
Html5新增标签与样式及让元素水平垂直居中
Jul 11 HTML / CSS
html5使用canvas画空心圆与实心圆
Dec 15 HTML / CSS
html5使用canvas画三角形
Dec 15 HTML / CSS
处理HTML5新标签的浏览器兼容版问题
Mar 13 HTML / CSS
HTML5 图片预加载的示例代码
Mar 25 HTML / CSS
CSS3实现的3D隧道效果
Apr 27 HTML / CSS
纯CSS打字动画的实现示例
Aug 05 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
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
PHP的5个安全措施小结
2012/07/17 PHP
php缩小png图片不损失透明色的解决方法
2013/12/25 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
php调用mysql存储过程实例分析
2014/12/29 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
基于jquery的表头固定的若干方法
2011/01/27 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
2015/03/05 Javascript
招聘网站基于jQuery实现自动刷新简历
2015/05/10 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
nodejs和php实现图片访问实时处理
2017/01/05 NodeJs
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
Electron vue的使用教程图文详解
2019/07/05 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
[01:08:44]NB vs VP 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python迭代器的使用方法实例
2013/11/21 Python
使用Python操作MySQL的一些基本方法
2015/08/16 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
Django 用户认证组件使用详解
2019/07/23 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
纯css3使用vw和vh实现自适应的方法
2018/02/09 HTML / CSS
保密工作整改报告
2014/11/06 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
解析Redis Cluster原理
2021/06/21 Redis
深入理解Pytorch微调torchvision模型
2021/11/11 Python