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轻松实现清新 Loading 效果的简单实例
Jun 06 HTML / CSS
用CSS禁用输入法(CSS3 UI规范)实例解析
Dec 04 HTML / CSS
推荐一些比较有用的css3新属性
Nov 11 HTML / CSS
CSS3 text shadow字体阴影效果
Jan 08 HTML / CSS
CSS3实现3D翻书效果
Jun 20 HTML / CSS
css3加js做一个简单的3D行星运转效果实例代码
Jan 18 HTML / CSS
利用CSS3实现进度条的两种姿势详解
Mar 21 HTML / CSS
微信浏览器左上角返回按钮拦截功能
Nov 21 HTML / CSS
html5 桌面提醒:Notifycations应用介绍
Nov 27 HTML / CSS
使用HTML5拍照示例代码
Aug 06 HTML / CSS
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
Mar 22 HTML / CSS
html5 div布局与table布局详解
Nov 16 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数组对比函数,存在交集则返回真,否则返回假
2011/02/03 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
PHP代码优化技巧小结
2015/09/29 PHP
PHP打印输出函数汇总
2016/08/28 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
yepnope.js 异步加载资源文件
2011/09/08 Javascript
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
jquery文字上下滚动的实现方法
2013/03/22 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
jquery mobile事件多次绑定示例代码
2013/09/13 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
js判断出两个字符串最大子串的函数实现方法
2016/11/01 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
vue的状态管理模式vuex
2017/11/30 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
Python实现批量下载图片的方法
2015/07/08 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
详解python算法之冒泡排序
2019/03/05 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
使用keras根据层名称来初始化网络
2020/05/21 Python
女装和独特珠宝:Sundance Catalog
2018/09/19 全球购物
不同浏览器创建XMLHttpRequest方法有什么不同
2014/11/17 面试题
实习生自荐信范文分享
2013/11/27 职场文书
大学军训通讯稿
2014/01/13 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
Python实现视频中添加音频工具详解
2021/12/06 Python
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers