<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>canvas</title>
<script type="text/javascript" src="../js/jQuery.js"></script>
<style type="text/css">
*{
margin: 0;
padding: 0;
outline: none;
border: none;
}
canvas{
width: 4rem;
float: left;
border: 1px solid black;
}
canvas:nth-child(2){
float: right;
}
button{
float: left;
padding: .1rem .2rem;
font-size: .7rem; }
</style>
</head>
<body>
<canvas id="canvasA" width="500" height="400"></canvas>
<canvas id="canvasB" width="500" height="400"></canvas>
<button id="filter">复制</button>
</body>
</html>
<script type="text/javascript">
/**
* rem 布局初始化
*/
$('html').css('font-size', $(window).width()/10); /**
* 获取 canvas 画布
* 获取 canvas 绘图上下文环境
*/
var canvasA = $('#canvasA')[0];
var cxtA = canvasA.getContext('2d'); var canvasB = $('#canvasB')[0];
var cxtB = canvasB.getContext('2d'); /**
* 获取canvas画布的内容 getImageData
* 内容放回到canvas画布 putImageData
* 获取ImgData的每一个像素 ImgData.data
* getImageData(起始点的横坐标, 起始点的纵坐标, 获取的宽度, 获取的高度)
* putImageData(绘制点的横坐标, 绘制点点纵坐标, imgData的起始点横坐标, imgData的起始点纵坐标, 宽度, 高度)
*/
var img = new Image();
img.src = "../img/background_2.jpg";
img.onload = function(){
cxtA.drawImage(img, 0, 0, canvasA.width, canvasA.height);
} $('#filter').on('click', function(){
var imgDataA = cxtA.getImageData(0, 0, canvasA.width, canvasA.height);
var pxData = imgDataA.data; //获取每一个像素 for(var i = 0; i < canvasB.width * canvasB.height; i++){
//灰度滤镜
var r = pxData[4*i+0];
var g = pxData[4*i+1];
var b = pxData[4*i+2];
//计算灰度的公式
var grey = 0.3*r + 0.59*g + 0.11*b;
pxData[4*i+0] = grey;
pxData[4*i+1] = grey;
pxData[4*i+2] = grey; }
cxtB.putImageData(imgDataA, 0, 0, 0, 0, canvasB.width, canvasB.height);
});
</script>

 

HTML5 Canvas ( 图形的像素操作 ) getImageData, putImageData, ImgData.data的更多相关文章

  1. [js高手之路] html5 canvas系列教程 - 像素操作(反色,黑白,亮度,复古,蒙版,透明)

    接着上文[js高手之路] html5 canvas系列教程 - 状态详解(save与restore),相信大家都应该玩过美颜功能,而我们今天要讲的就是canvas强大的像素处理能力,通过像素处理,实现 ...

  2. canvas上的像素操作(图像复制,细调)

    canvas上的像素操作(图像复制,细调) 总结 1.操作对象:ImageData 对象,其实是canvas的像素点集合 2.主要操作: var obj=ctx.getImageData(0,0,10 ...

  3. [js高手之路] html5 canvas系列教程 - 图片操作(drawImage,clip,createPattern)

    接着上文[js高手之路] html5 canvas系列教程 - 文本样式(strokeText,fillText,measureText,textAlign,textBaseline)继续,本文介绍的 ...

  4. HTML5 Canvas一些常用的操作

    粗略的Canvas API 1. context var context = canvas.getContext('2d'); 2.Canvas state context.save();//将当前状 ...

  5. HTML5 Canvas ( 图形的透明度和遮盖 ) globalAlpha, globalCompositeOperation

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. HTML5 Canvas ( 图形变换矩阵 ) transform, setTransform

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. HTML5 Canvas ( 图形变换, 升级版的星空 ) translate, rotate, scale

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. HTML5 Canvas ( 图形的阴影 ) shadowColor, shadowOffsetX, shadowOffsetY, shadowNlur

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. [js高手之路] html5 canvas系列教程 - 线形渐变,径向渐变与阴影设置

    接着上文[js高手之路] html5 canvas系列教程 - 像素操作(反色,黑白,亮度,复古,蒙版,透明)继续. 一.线形渐变 线形渐变指的是一条直线上发生的渐变. 用法: var linear ...

随机推荐

  1. 2012年东京区域赛 UVAlive6182~6191

    暑假训练场 A(UVAL6182). 凯神看了敲掉的题目,还没有看过 #include <iostream> #include <memory.h> using namespa ...

  2. Properties类与配置文件

    //加载文件public static void testLoadProperties() throws Exception { Properties properties = new Propert ...

  3. knowledge-repo 知识管理简单试用

    knowledge-repo 是airbnb 开源的知识管理工具,只集成git 数据库等类型的存储 安装 pip install --upgrade "knowledge-repo[all] ...

  4. smarty 学习 ——smarty 开发环境配置

    smarty 对于开发的便利性不用多说了,直接进行开发环境的配置. 1.下载smarty 开发包 直接在官网进行下载即可 2.引用开发核心库 将libs文件中的东西拷贝到工程. smarty.clas ...

  5. leetcode -day30 Reverse Linked List II

    1.  Reverse Linked List II  Reverse a linked list from position m to n. Do it in-place and in one- ...

  6. MongoDB注册Windows服务启动

    下载MongoDB安装到:E:\Work_App\MongoDB 这个目录 安装:E:\Work_App\MongoDB (安装在专门的目录中) 配置: 1.在E:\Work_App\MongoDB\ ...

  7. FastAdmin 绑定的模块禁用路由

    为了安全,将后台入口隐藏. 这里出一个问题,因为装了 CMS 插件,使用入口登录后显示的是 CMS 的首页. 这个问题已经修复. https://gitee.com/karson/fastadmin/ ...

  8. vue-cli 项目构建性能分析工具

    修改package.json { ... "scripts": { ... //新增 "analyz": "NODE_ENV=production n ...

  9. JWT 基础教程

    原文地址:JWT 基础教程 博客地址:http://www.extlight.com 一.前言 针对前后端分离的项目,大多是通过 token 进行身份认证来进行交互,今天将介绍一种简单的创建 toke ...

  10. Linq快速入门——Lambda表达式的前世今生

    Linq快速入门——Lambda表达式的前世今生   Lambda表达式其实并不陌生,他的前生就是匿名函数,所以要谈Lambda表达式,就不得不谈匿名函数,要谈匿名函数,那又要不得不谈委托. 何为委托 ...