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写的模仿iPhone中的返回按钮
Apr 04 HTML / CSS
利用CSS3实现圆角的outline效果的教程
Jun 05 HTML / CSS
可自定义箭头样式的CSS3气泡提示框
Mar 16 HTML / CSS
CSS中越界问题的经典解决方案【推荐】
Apr 19 HTML / CSS
css3新单位vw、vh的使用教程
Mar 23 HTML / CSS
CSS3选择器新增问题的实现
Jan 21 HTML / CSS
HTML5 Canvas实现文本对齐的方法总结
Mar 24 HTML / CSS
用HTML5实现网站在windows8中贴靠的方法
Apr 21 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
Jan 29 HTML / CSS
CSS实现两列布局的N种方法
Aug 02 HTML / CSS
HTML5 新增内容和 API详解
Nov 17 HTML / CSS
el-form每行显示两列底部按钮居中效果的实现
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
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
2014/06/13 Javascript
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
2017/10/30 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
利用python为运维人员写一个监控脚本
2018/03/25 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
2019/08/02 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
Python实现手机号自动判断男女性别(实例解析)
2019/12/22 Python
学python需要去培训机构吗
2020/07/01 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
门卫工作岗位职责
2013/12/17 职场文书
驾驶员培训方案
2014/05/01 职场文书
出租房屋协议书
2014/09/14 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
2014年便民服务中心工作总结
2014/12/20 职场文书
公司老总年会致辞
2015/07/30 职场文书
vue实现简易音乐播放器
2022/08/14 Vue.js