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中用animation的steps属性制作帧动画
Apr 25 HTML / CSS
CSS3 简单又实用的5个属性
Mar 04 HTML / CSS
使用CSS3的appearance属性改变任何元素的浏览器默认风格
Dec 24 HTML / CSS
使用CSS Grid布局实现网格的流动
Dec 30 HTML / CSS
css3 pointer-events 介绍详解
Sep 18 HTML / CSS
纯css3制作煽动翅膀的蝴蝶的示例
Apr 23 HTML / CSS
html5应用缓存_动力节点Java学院整理
Jul 13 HTML / CSS
html5指南-7.geolocation结合google maps开发一个小的应用
Jan 07 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
Jan 29 HTML / CSS
HTML5 FileReader对象的具体使用方法
May 22 HTML / CSS
详解如何将 Canvas 绘制过程转为视频
Jan 25 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用户指南-cookies部分
2006/10/09 PHP
php函数之子字符串替换&amp;#65279; str_replace
2011/03/23 PHP
php中执行系统命令的方法
2015/03/21 PHP
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
javascript给span标签赋值的方法
2015/11/26 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python生成不重复随机值的方法
2015/05/11 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
大专应届生个人简历的自我评价
2013/10/15 职场文书
导游的职业规划书范文
2013/12/27 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
2014年学前班工作总结
2014/12/08 职场文书
2015年路政工作总结
2015/05/22 职场文书
护士业务学习心得体会
2016/01/25 职场文书
用python自动生成日历
2021/04/24 Python
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技
Redis主从复制操作和配置详情
2022/09/23 Redis