• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > HTML5 CANVAS:像素处理

HTML5 CANVAS:像素处理

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含HTML5,CANVAS,像素处理等相关知识,匿名希望在学习及工作中可以帮助到您
我们可以直接从HTML5 canvas中获取单个像素。通过ImageData对象我们可以以读写一个数据数组的方式来操纵像素数据。当完成像素操作之后,如果要显示它们,需要将这些像素复制到canvas上。

创建一个ImageData 对象

要创建一个ImageData对象,可以使用2D上下文的createImageData()方法。

var canvas  = document.getElementById("ex1");
var context = canvas.getContext("2d");
 
var width  = 100;
var height = 100;
var imageData = context.createImageData(width, height);

ImageData对象代表canvas中某个区域的底层像素数据。它包含三个只读的属性:

  • width:图像的宽度,单位像素。

  • height:图像的高度,单位像素。

  • data:包含像素值的一维数组。

上面的例子中创建了一个100x100像素的ImageData对象。

管理像素

在data数组中的每一个像素包含4个字节的值。也就是说每一个像素由4个字节表示,每一个字节分别表示红色,绿色,蓝色和一个透明度alpha通道(RGBA)。像素的颜色由红、绿、蓝混合得到的最终颜色决定。透明度alpha通道决定这个像素的透明度。红、绿、蓝和alpha通道的值都在0-255之间。这和photoshop中的光的三原色RGB的原理是相同的。

要读取一个像素的值,你可以使用下面的代码:

var pixelIndex = 0;
var red   = imageData.data[pixelIndex    ];  // 红色
var green = imageData.data[pixelIndex + 1];  // 绿色
var blue  = imageData.data[pixelIndex + 2];  // 蓝色
var alpha = imageData.data[pixelIndex + 3];  // 透明度

如果要接收后面的像素值,可以增加pixelIndex的值为4的倍数。你可以通过下面的方法来计算给定像素的index值。

var index = 4 * (x + y * width);

在上面的语句中,x和y表示该像素在像素网格中的坐标位置。data数组中的像素会被初始化为一个很长的像素序列网格。它从左上角开始,然后向前移动。当到达一行的末尾时,接着从下一行开始显示。

下面的图像时一个20像素宽,8像素高的ImageData像素数组。如图所示,序列从左上角开始,然后向右移动,当到达一行的最大时再换行显示。

1002.png

复制像素到canvas上

当你完成了像素操作,你可以使用2D上下文的putImageData()函数将它们复制到canvas上。putImageData()函数有两种格式。第一种格式是复制所有的像素到canvas中。下面是一个示例代码:

var canvasX = 25;
var canvasY = 25;
 
context.putImageData(imageData, canvasX, canvasY);

canvasX和canvasY参数是canvas上插入像素的x和y坐标。

第二种格式的putImageData()函数可以复制一个矩形区域的像素到canvas中。下面是一个示例代码:

var canvasX = 25;
var canvasY = 25;
var sx      = 0;
var sy      = 0;
var sWidth  = 25;
var sHeight = 25;
context.putImageData(imageData, canvasX, canvasY,
    sx, sy, sWidth, sHeight);

sx和sy参数(sourceX 和 sourceY)是矩形左上角的x和y坐标。

sWidth和sHeight参数(sourceWidth 和 sourceHeight)是矩形的宽度和高度。

从canvas中获取像素

我们也可以从canvas上获取一个矩形区域的像素到一个ImageData对象中。通过getImageData函数可以完成这个操作。例如下面的代码:

var x      =  25;
var y      =  25;
var width  = 100;
var height = 100;
var imageData2 = context.getImageData(x, y, width, height);

x和y参数是从canvas上获取的矩形的左上角的坐标。

width和height参数是从canvas上获取的矩形的宽度和高度。

以上就是HTML5 CANVAS:像素处理的内容,更多相关内容请关注微课江湖()!

您可能想查找下面的文章:

  • HTML5知识点总结
  • HTML5的本地存储
  • HTML5本地存储之IndexedDB
  • Html5实现文件异步上传功能
  • Html5新标签datalist实现输入框与后台数据库数据的动态匹配
  • 详解HTML5 window.postMessage与跨域
  • HTML5拖放API实现拖放排序的实例代码
  • 解决html5中video标签无法播放mp4问题的办法
  • HTML5新特性 多线程(Worker SharedWorker)
  • Html5新增标签有哪些

相关文章

  • 2018-12-03手机端H5 header定义样式
  • 2017-08-06HTML5的结构和语义(5):交互
  • 2018-12-03SVG(可缩放矢量图形)视区盒属性viewbox与preserveAspectRatio
  • 2018-12-03通过HTML5移动开发实现图片压缩上传的功能
  • 2018-12-03如何使用phonegap获取位置信息的实现方法
  • 2018-12-03如何解决IE8下不兼容rgba()的问题
  • 2018-12-03如果一个仅靠培训学习html5 如何才能使自己真正做到符合市场所需要的人才标准?
  • 2018-12-03html5实现把上传的图片转成base64编码在显示(代码实例)
  • 2018-12-03想做一款基于HTML5的卡牌游戏,有什么好的引擎推荐么?
  • 2018-12-03HTML5画布下js的文字云/标签云效果-D3 Cloud

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
    • H5缓存机制浅析 移动端Web加载性能优化
    • 12个冷门的H5设计小技巧
    • Html5中postmessage实现子父窗口传值的代码
    • 详解HTML5地理定位与第三方工具百度地图的应用
    • Canvas实现圆形进度条并显示数字百分比
    • 如何使用H5做出上传图片功能
    • CSS3的文字阴影—Text-Shadow
    • html5实现的便签特效(实战分享)
    • 关于14款超时尚的HTML5时钟动画的详细介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有