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动画之利用requestAnimationFrame触发重新播放功能
Sep 11 HTML / CSS
css3的过滤效果简单实例
Aug 03 HTML / CSS
浅谈three.js中的needsUpdate的应用
Nov 12 HTML / CSS
详解HTML5中的manifest缓存使用
Sep 09 HTML / CSS
如何利用input事件来监听移动端的输入
Apr 15 HTML / CSS
HTML5利用约束验证API来检查表单的输入数据的代码实例
Dec 20 HTML / CSS
基于Html5实现的语音搜索功能
May 13 HTML / CSS
CSS3 制作的图片滚动效果
Apr 14 HTML / CSS
教你做个可爱的css滑动导航条
Jun 15 HTML / CSS
sass 常用备忘案例详解
Sep 15 HTML / CSS
分享几个实用的CSS代码块
Jun 10 HTML / CSS
使用CSS实现按钮边缘跑马灯动画
May 07 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 和 MySQL 基础教程(三)
2006/10/09 PHP
使用array_map简单搞定PHP删除文件、删除目录
2014/10/29 PHP
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
2010/11/20 Javascript
JavaScript中的关键字&quot;VAR&quot;使用详解 分享
2013/07/31 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
Python实现Linux下守护进程的编写方法
2014/08/22 Python
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
Python中IPYTHON入门实例
2015/05/11 Python
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
python pandas 对series和dataframe的重置索引reindex方法
2018/06/07 Python
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
利用python绘制正态分布曲线
2021/01/04 Python
硕士研究生自我鉴定
2013/11/08 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
教师学期个人总结
2015/02/11 职场文书
2015年度优秀员工自荐书
2015/03/06 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python
python中Matplotlib绘制直线的实例代码
2021/07/04 Python
Python中文纠错的简单实现
2021/07/07 Python
Golang解析JSON对象
2022/04/30 Golang