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的rem属性制作响应式页面布局的要点解析
May 24 HTML / CSS
css3之UI元素状态伪类选择器实例演示
Aug 11 HTML / CSS
纯CSS3发光分享按钮的实现教程
Sep 06 HTML / CSS
利用css3画个同心圆示例代码
Jul 03 HTML / CSS
CSS3实现全景图特效示例代码
Mar 26 HTML / CSS
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
Jan 27 HTML / CSS
html5 sessionStorage会话存储_动力节点Java学院整理
Jul 06 HTML / CSS
canvas学习笔记之绘制简单路径
Jan 28 HTML / CSS
通过HTML5规范搞定i、em、b、strong元素的区别
Mar 04 HTML / CSS
AmazeUI的JS表单验证框架实战示例分享
Aug 21 HTML / CSS
Canvas波浪花环的示例代码
Aug 21 HTML / CSS
html form表单基础入门案例讲解
Jul 21 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过滤XSS攻击的函数
2013/11/12 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
JavaScript触发器详解
2007/03/10 Javascript
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
jquery实现居中弹出层代码
2010/08/25 Javascript
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
jquery实现全选、全不选以及单选功能
2017/03/23 jQuery
ES6中javascript实现函数绑定及类的事件绑定功能详解
2017/11/08 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
python如何读写csv数据
2018/03/21 Python
Random 在 Python 中的使用方法
2018/08/09 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
使用Pandas将inf, nan转化成特定的值
2019/12/19 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
银行职员自我鉴定
2014/04/20 职场文书
教师对学生的评语
2014/04/28 职场文书
小城镇建设汇报材料
2014/08/16 职场文书
淘宝好评语句大全
2014/12/31 职场文书
英文升职感谢信
2015/01/23 职场文书
2015年劳动部工作总结
2015/05/23 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
用Python将库打包发布到pypi
2021/04/13 Python
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers